关于C#:为什么Int64.MaxValue是long?


Why is Int64.MaxValue a long?

本问题已经有最佳答案,请猛点这里访问。

enter image description here

它不应该是整数类型吗?

这样,一些使用int的函数无法接受它作为参数,因为它返回一个long,但它们期望一个int


在.NET中,所有基元类型和一些标准化类型都有通用的内置类型别名。每个别名对应一个实际的.NET类型,别名和类型名都可以互换使用。

这是C中的一些别名的列表。其他.NET语言,可能对同一类型使用不同的别名(与vb.net类似)

1
2
3
4
5
6
    byte   -> System.Byte
    short  -> System.Int16
    int    -> System.Int32
    long   -> System.Int64
    string -> System.String
    ...

如您所见,System.Int64表示64位整数a.k.a.long


Int64long型。

Int32int型。


.NET对某些类型使用类型别名。这意味着类型别名与它的相对值类型完全等效。从下面的列表中可以看到,System.Int64的类型别名是"long"。这是.NET中类型别名的完整列表。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//Alias      |  Relative Data Type
byte         |  System.Byte
sbyte        |  System.SByte
short        |  System.Int16
ushort       |  System.UInt16
int          |  System.Int32
uint         |  System.UInt32
long         |  System.Int64
ulong        |  System.UInt64
float        |  System.Single
double       |  System.Double
decimal      |  System.Decimal
string       |  System.String
bool         |  System.Boolean
object       |  System.Object


Long == Int64 >>Output: True

Int == Int32 >>Output: True

Int64 == Int32 >>Output: False

如果long/int64足够小,则只能将其转换为int/int32,但始终可以将int转换为long。int64/long支持大于或小于标准int的数字。