2016-11-17 33 views
9

最も一般的なデータ型は、型の中に組み込まれている:なぜ、DateTimeのためのビルトインタイプが存在しないなど、Int32は、intを持ってBooleanboolを持ち、Stringstringを持っていますか?DateTimeの組み込み型がないのはなぜですか?

まず、DateTimeにはプロパティとパブリック関数がありますが、intもそうだと思いました。誰かがこれについていくつかの光を当てることができますか?タイプが同等の組み込み基準を持つ基準は何ですか?

+2

どのような価値が追加されますか? '' System.Double'、 'System.Int64'などの' 'double''、' 'long''などは全て' 'builtin '型であるわけではありません。' 'decimal''はプリミティブ型ではないのでCLRで –

答えて

9

CLRは、すべての他のものを定義するのに必要な最小限のデータタイプのみを基本ビルディングブロックとして定義します。それらはエイリアスが与えられた型です。

DateTimeは構造体にパックされている単なるロングと整数のコレクションなので、CLRに新しいデータ型を作成する必要はありません。 CLRで既に定義されているデータ型で構築できます。それをエイリアシングする必要はありません。

+1

私はOPが意味するものだと思います:なぜSystem.Int32には 'int'を、System.DStringには' datetime'ではなく 'System.String'に' string'を入力できますか? –

+4

それが疑問であれば、それは非常に簡単です: 'DateTime'はCLRの一部ではありません。したがって、エイリアスはありません。それは基本的な型ではありません。 –

+2

@PatrickHofmanそれは大きな議論ではありません。 'System.Decimal'はCLRの一部ではありませんが、' decimal'があります。 –

1

これは単なる言語のエイリアスです。 DateTimeにエイリアスがありません。それでおしまい。 C#言語仕様によれば

UPDATE

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:\プログラムファイルのMicrosoftのVisual Studio \(x86の)

CSHARP言語Specification.docx \ 1033 \ 11.0 \ VC#の\仕様
関連する問題