我刚刚开始使用c#。但无法弄清楚DateTime
。我知道这是一个结构,但为什么我会在某个时候看到不同的方法来初始化它。
如果它是一个结构怎么样?
DateTime myValue = DateTime.Now; // This is struct
DateTime myValue2 = new DateTime(); // This is class with +11 overloads.
那么c#one中有两个版本的datetime是struct而另一个是class吗?
答案 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将弹出工具提示:
Structs行为主要是类,你可以用new
运算符实例化它们,它们也可以有方法。您不能使用它们实例化的方式来判断某些东西是结构还是类。
答案 4 :(得分:2)
System.DateTime
是struct
。
这并不意味着它不能有许多不同的构造函数和方法以及重载。
答案 5 :(得分:1)
DateTime是一个结构:MSDN Struct Documentation。aspx。结构可以有构造函数重载。
顺便说一句,如果您将光标悬停在DateTime
上,Intellisense会说 struct System.DateTime
。
答案 6 :(得分:-3)
Struct更像是一个轻量级类,而不是一个值而不是一个对象。 DateTime是其中一个struct