2014-11-05 49 views
3

根据我能找到的我相信DateTime是一种原始类型,但是当我检查我的DateTime变量时,属性'IsPrimitive'为false。DateTime是一个原始类型吗?

http://msdn.microsoft.com/en-us/library/aa711900(v=vs.71).aspx

在你上面的文章可以看到,他们说的DateTime是原始的。那么有没有我做错了什么,或者我读了那篇文章错了?

+0

”日期值类型是原始类型,它表示日期和/或时间,**映射到**系统.DateTime“ – devqon 2014-11-05 09:33:41

+3

本文是一篇* Visual Basic *文章。 – 2014-11-05 09:34:27

+0

'typeof(DateTime).IsPrimitive'也返回'false'。 – 2014-11-05 09:46:34

回答

3

MSDN page on IsPrimitive列出了被认为是原始的.NET类型,只要这个方法而言:

的基本类型是布尔,字节,为SByte,Int16的,UINT16,的Int32, UInt32的,Int64的,UInt64,IntPtr,UIntPtr,Char,Double和Single。

而DateTime不在此列表中。

4

Date(它映射到System.DateTime)是Visual Basic .NET语言(简称VB.NET)的原始类型

它不是C#中的原始类型,它也不是CLR中的原始类型。

给定语言的基本类型是一种可以编写字符串的类型,并且编译器将此类属性理解为相关类型。你不能在C#中使用DateTime。

CLR的基本类型是允许进行一些低级优化的类型。它非常受限制:只有字符串和不同的整数和浮点数结构是原始类型。

+0

尽管编译器有魔力,但我不会调用'decimal'原语。在谈论C#时,我会避免使用“primitive”这个词,因为规范没有正确定义它。在CLR层面上,它至少定义了这个概念,但仍然没有什么实际意义。 – CodesInChaos 2014-11-05 09:47:12

+1

对于CLR,'type'(字符串).IsPrimitive'为false的意义上''字符串不是原始的。 – 2015-09-16 11:49:53

+0

@CodesInChaos我同意! C#语言规范提到了***预定义的结构类型***,它与CLR认为是基本类型的类型有很大的交集。尽管两套都没有包含在另一套中。当然,C#也有“预定义”类型的字符串“关于”,“对象”和“动态”,但它们是引用类型。最后,特殊类型'void'在C#中有它自己的关键字,但是C#并不认为它是一个结构类型,显然,CLR并不认为它是原始的。 'void'是一个异常值类型。 – 2015-09-16 11:55:07

0

使用Type.IsPrimitive来确定类型是否是原语。

对于您的特定问题,您可以尝试DateTime.Now.GetType().IsPrimitive。 (这确实会返回false)。 “接受的答案中的链接指的是Visual Basic语言规范原语类型 ...