是C#中的datetime结构或类吗?

时间:2014-01-09 22:13:25

标签: c# datetime

我刚刚开始使用c#。但无法弄清楚DateTime。我知道这是一个结构,但为什么我会在某个时候看到不同的方法来初始化它。

如果它是一个结构怎么样?

DateTime myValue = DateTime.Now;  // This is struct

DateTime myValue2 = new DateTime(); // This is class with +11 overloads. 

那么c#one中有两个版本的datetime是struct而另一个是class吗?

7 个答案:

答案 0 :(得分:9)

使用关键字new并不意味着它正在创建一个类的实例。它正在创建一个struct的实例。结构也可以有构造函数,并且使用与类相同的语法对它们进行初始化(在C#中),尽管它们是结构体。

答案 1 :(得分:8)

类型不能同时是struct和按引用类型。这两个构造都会生成DateTime,这是一种值类型(也称为struct)。

两者之间的区别在于,第一个产生要在名为Now的静态属性中复制的值,第二个通过DateTime的11个构造函数之一初始化值。

答案 2 :(得分:4)

DateTime是一个结构。结构也可能有构造函数。看看这个documentation如果你想惊讶,你可以定义一个这样的整数:

int x = new int();

答案 3 :(得分:3)

这确实是一种结构。要知道哪种类型,您可以做两件事:

1)查看the doc,对于DateTime,它在标题中清楚地标明了 2)将鼠标悬停在该类型上。 Visual Studio将弹出工具提示:enter image description here

Structs行为主要是类,你可以用new运算符实例化它们,它们也可以有方法。您不能使用它们实例化的方式来判断某些东西是结构还是类。

答案 4 :(得分:2)

System.DateTimestruct

这并不意味着它不能有许多不同的构造函数和方法以及重载。

答案 5 :(得分:1)

DateTime是一个结构:MSDN Struct Documentation。aspx。结构可以有构造函数重载。

顺便说一句,如果您将光标悬停在DateTime上,Intellisense会说 struct System.DateTime

答案 6 :(得分:-3)

Struct更像是一个轻量级类,而不是一个值而不是一个对象。 DateTime是其中一个struct