int和System的区别是什么?Int16、系统。Int32和System。Int64,而不是它们的大小?


当前回答

以上这些人的回答基本正确。Int, int16, int32…根据数据存储容量的不同而有所不同。但这就是为什么编译器必须处理这些问题——它是为了解决潜在的2038年问题。点击链接了解更多信息。 https://en.wikipedia.org/wiki/Year_2038_problem

其他回答

没什么。两种类型之间的唯一区别是它们的大小(以及它们可以表示的值的范围)。

以上这些人的回答基本正确。Int, int16, int32…根据数据存储容量的不同而有所不同。但这就是为什么编译器必须处理这些问题——它是为了解决潜在的2038年问题。点击链接了解更多信息。 https://en.wikipedia.org/wiki/Year_2038_problem

关于16、32和64类型有一个非常重要的注意事项:

如果你运行这个查询… 数组中。IndexOf(new Int16[]{1,2,3}, 1)

你应该得到0(0),因为你问…是1在1 2或3的数组中。 如果你得到的答案是-1,这意味着1不在1,2,3的数组中。

来看看我的发现: 下面所有的结果都应该是0而不是-1 (我已经在所有的框架版本2.0,3.0,3.5,4.0中进行了测试)

C#:

Array.IndexOf(new Int16[]{1,2,3}, 1) = -1 (not correct)
Array.IndexOf(new Int32[]{1,2,3}, 1) = 0 (correct)
Array.IndexOf(new Int64[]{1,2,3}, 1) = 0 (correct)

VB。NET:

Array.IndexOf(new Int16(){1,2,3}, 1) = -1 (not correct)
Array.IndexOf(new Int32(){1,2,3}, 1) = 0 (correct)
Array.IndexOf(new Int64(){1,2,3}, 1) = -1 (not correct)

我的观点是,对于数组。IndexOf比较,只信任Int32!

唯一真正的区别是大小。这里所有的int类型都是带符号的整型值,大小不同

Int16: 2字节 Int32和int: 4字节 Int64: 8字节

Int64和其他的有一个小的区别。在32位平台上,分配给Int64存储位置不保证是原子的。对于所有其他类型都是保证的。

Int=Int32——>原始长类型 Int16——>原始int Int64—>在64位系统之后提供新的数据类型 "int"仅用于向后兼容。我们应该使用新的int类型使我们的程序更精确。 --------------- 我注意到的另一件事是,没有类似于Int16、Int32和Int64的名为Int的类。所有有用的函数,如TryParse for integer,都来自Int32.TryParse。