2014-11-05 87 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語言規範原語類型 ...