2011-11-02 1 views
5

Huh that's ironic今日私は周りを遊んでいて、Int64.MaxValueを何らかの方法で増やすことができて、Int64.MaxValueがInt64ではなくLongであることを知りました。なぜInt64.MaxValueがLongを返すのですか?

なぜ私はInt64 myInt = Int64.MaxValue;のように私がmyIntがIntになるか、Longになるかどうかを意味するのですか?Int64の代わりにLongをこのフィールドに格納する目的は何ですか?

+1

サイドノート:MaxValueを増減することはできません。 Int64(またはMaxValueを持つ他のタイプ)は制限されませんが、それはそのタイプの大きさの指標です。 –

答えて

16

Int64とlongは同じタイプなので、

Int64 = long  
Int32 = int  
Int16 = short 
3

longInt64のためだけの別名です。 hereを参照してください。

0

それぞれInt16Int32、およびshortにエイリアスされInt64int、そしてlongあります。数値は、値を格納するために使用されるビット数です。言語仕様から

3

:単純型の

メンバーが単純型で別名構造体型のメンバーに直接対応:longのメンバー•

はのメンバーでありますSystem.Int64構造体。

§3.4.2に追加の別名があります。

そして、4.1.4から

C#は事前に定義された構造体タイプのセットを提供しますが、単純なタイプと呼ばれます。シンプルな型は予約語で識別されますが、これらの予約語は、System名前空間の事前定義された構造体型の単純な別名です(下の表を参照)。

Reserved word Aliased type 
long   System.Int64 
+0

+1はC#仕様を最初に参照しています。 – vcsjones

関連する問題