C# 日期对象与日期时间对象

C# 日期对象与日期时间对象,c#,.net,datetime,C#,.net,Datetime,我目前正在查看date和datetime对象的msdn页面。我还打开了reflector,看起来date和datetime对象只是引用了日期结构。 为什么我们有两个引用相同结构的对象?它们之间有什么区别?没有日期类型。只有一种类型是您应该用于任何日期或日期时间数据的。CLR类(例如,datetime,Int32等)包含实际实现。这是你们将在反射器中看到的 由于它们的传统,C#和VB为常用的数据类型定义了某些别名。例如,C中的int是Int32的别名。在VB中,一个这样的别名是Date,用于Dat

我目前正在查看date和datetime对象的msdn页面。我还打开了reflector,看起来date和datetime对象只是引用了日期结构。
为什么我们有两个引用相同结构的对象?它们之间有什么区别?

没有日期类型。只有一种类型是您应该用于任何日期或日期时间数据的。

CLR类(例如,
datetime
Int32
等)包含实际实现。这是你们将在反射器中看到的

由于它们的传统,C#和VB为常用的数据类型定义了某些别名。例如,C中的
int
Int32
的别名。在VB中,一个这样的别名是
Date
,用于
DateTime

以下是这些别名的列表:


可能重复:您能否澄清您所指的是哪个
Date
struct?从.NET 4开始,DateTimeOffset是表示日期/时间信息的推荐方式。DateTime基本上已被弃用。@MattDavey:[需要引用]:)@Andew Hare为什么:)>“ADateTimeOffset是最常见的日期-时间场景中使用的新的首选类型。”——@MattDavey-非常酷:)但我不认为DateTime的所有使用都应该切换到DateTimeOffset,只是在某些情况下。查看文章底部的“使用指南”。是的,我对DateTime的反对有些过分热情,但仍然有一个地方:)我认为DateTimeOffset尚未被广泛采用的原因是它的名称有点令人困惑。。人们倾向于认为它代表一个日期时间的偏移量(很像TimeSpan),而实际上它代表[date+time+offset]。我认为C中没有
date
DateTime
别名是很奇怪的。