Почему Int64.MaxValue возвращает Long? - PullRequest
5 голосов
/ 02 ноября 2011

Да, это иронично , играя сегодня, я подумал, можно ли каким-то образом увеличить Int64.MaxValue, и просто обнаружил, что Int64.MaxValue - это не Int64, а Long.

Почему, означает ли это, что если я храню как Int64 myInt = Int64.MaxValue;, то myInt все равно будет Int или станет длинным, для чего нужно хранить Long вместо Int64 в этом поле.

Ответы [ 6 ]

16 голосов
/ 02 ноября 2011

Поскольку Int64 и long имеют одинаковый тип.

Int64 = long    
Int32 = int    
Int16 = short
9 голосов
/ 02 ноября 2011

long является синонимом Int64

Ссылка: http://msdn.microsoft.com/en-us/library/ctetwysk(v=VS.100).aspx

3 голосов
/ 02 ноября 2011

Из спецификации языка:

Члены простого типа соответствуют непосредственно членам типа структуры, имеющим псевдоним простого типа:

• Члены long являются членами System.Int64 структуры.

Вы можете увидеть дополнительные псевдонимы в §3.4.2.

И из 4.1.4:

C # предоставляет набор предопределенных структурных типов, называемых простыми типами.Простые типы идентифицируются с помощью зарезервированных слов, но эти зарезервированные слова являются просто псевдонимами для предопределенных структурных типов в пространстве имен System, как описано в таблице ниже.

Reserved word Aliased type
long          System.Int64
3 голосов
/ 02 ноября 2011

long это просто псевдоним для Int64. Смотрите здесь .

2 голосов
/ 02 ноября 2011

Int64 является длинным:

        Type t1 = typeof(Int64);
        Type t2 = typeof(long);
        bool same = t1.Equals(t2);  // true

Проверьте MSDN:

http://msdn.microsoft.com/en-us/library/ya5y69ds.aspx

0 голосов
/ 02 ноября 2011

Есть Int16, Int32 и Int64, которые имеют псевдонимы short, int и long соответственно.Обратите внимание, что число - это количество бит, используемых для хранения значения.

...