最常見的數據類型有一個內置的類型:Int32
有int
,Boolean
有bool
,String
有string
等爲什麼沒有內置類型的DateTime?爲什麼沒有DateTime的內置類型?
首先,我認爲這是因爲DateTime
有屬性和公共職能,但int
也是如此。任何人都可以對此有所瞭解嗎?一個類型具有內置等價物的標準是什麼?
最常見的數據類型有一個內置的類型:Int32
有int
,Boolean
有bool
,String
有string
等爲什麼沒有內置類型的DateTime?爲什麼沒有DateTime的內置類型?
首先,我認爲這是因爲DateTime
有屬性和公共職能,但int
也是如此。任何人都可以對此有所瞭解嗎?一個類型具有內置等價物的標準是什麼?
CLR只定義了基本構建塊:定義所有其他構件所需的最小數據類型。這些是給出別名的類型。
由於DateTime
只是一個包含在一個結構中的long和整數的集合,因此不需要在CLR中爲它創建一個新的數據類型。您可以使用已在CLR中定義的數據類型來構建它。不需要別名。
我認爲OP的意思是:爲什麼我們可以爲System.Int32和System.Int32輸入'int'而在System.DateTime輸入'System.String',而不是'datetime'? –
如果這是個問題,是否很簡單:'DateTime'不是CLR的一部分。因此它沒有別名。它不是原始類型。 –
@PatrickHofman這不是一個很好的論點。 'System.Decimal'不是CLR的一部分,但我們有'decimal'。 –
這些只是該語言中的別名。 DateTime沒有別名。而已。
UPDATE:
根據C#語言規範:
C#提供了一組預定義結構類型稱爲簡單類型。簡單類型通過保留字標識,但這些保留字只是System命名空間中預定義結構類型的別名,如下表所述。
Reserved word Aliased type ---------------------------- sbyte System.SByte byte System.Byte short System.Int16 ushort System.UInt16 int System.Int32 uint System.UInt32 long System.Int64 ulong System.UInt64 char System.Char float System.Single double System.Double bool System.Boolean decimal System.Decimal
的C#語言規範可以在這裏找到:
C:\ Program Files文件(x86)的\微軟的Visual Studio 11.0 \ VC#\規格\ 1033 \ CSharp語言Specification.docx
這會增加什麼價值?所有'double',''long'等等對於'System.Double','System.Int64'等都是_aliases_。不是所有帶別名的類型都是「內置」類型,因爲'decimal'不是原始類型在CLR中。 –