2016-11-17 18 views
9

最常見的數據類型有一個內置的類型:Int32intBooleanboolStringstring等爲什麼沒有內置類型的DateTime?爲什麼沒有DateTime的內置類型?

首先,我認爲這是因爲DateTime有屬性和公共職能,但int也是如此。任何人都可以對此有所瞭解嗎?一個類型具有內置等價物的標準是什麼?

+2

這會增加什麼價值?所有'double',''long'等等對於'System.Double','System.Int64'等都是_aliases_。不是所有帶別名的類型都是「內置」類型,因爲'decimal'不是原始類型在CLR中。 –

回答

9

CLR只定義了基本構建塊:定義所有其他構件所需的最小數據類型。這些是給出別名的類型。

由於DateTime只是一個包含在一個結構中的long和整數的集合,因此不需要在CLR中爲它創建一個新的數據類型。您可以使用已在CLR中定義的數據類型來構建它。不需要別名。

+1

我認爲OP的意思是:爲什麼我們可以爲System.Int32和System.Int32輸入'int'而在System.DateTime輸入'System.String',而不是'datetime'? –

+4

如果這是個問題,是否很簡單:'DateTime'不是CLR的一部分。因此它沒有別名。它不是原始類型。 –

+2

@PatrickHofman這不是一個很好的論點。 'System.Decimal'不是CLR的一部分,但我們有'decimal'。 –

1

這些只是該語言中的別名。 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

相關問題