在c#中,int和Int32是同一个东西,但我读过很多次int比Int32更受欢迎,没有给出原因。这是有原因的吗,我应该在意吗?


当前回答

这两者确实是同义的;int看起来会更熟悉一些,Int32让那些阅读你的代码的人更清楚地看到32位。我倾向于在我只需要“一个整数”的地方使用int,在大小很重要的地方使用Int32(密码代码,结构),这样未来的维护者就会知道在适当的情况下扩大int是安全的,但应该注意以同样的方式改变Int32。

结果代码将是相同的:区别纯粹是可读性或代码外观。

其他回答

int是c#语言中System的快捷方式。Int32

虽然这确实意味着微软可能会改变这种映射,但FogCreek讨论的一篇文章指出[来源]

“关于64位的问题——微软确实在开发64位版本的。net框架,但我很确定int不会在该系统上映射到64位。

原因:

1. c# ECMA标准明确规定int是32位,long是64位。

2. 微软在框架1.1版本中引入了额外的属性和方法,返回长值而不是int值,例如Array。除了Array.GetLength之外的GetLongLength。

所以我认为可以肯定地说,所有内置的c#类型都将保持当前的映射。”

根据我的经验,这是一种惯例。我不知道在Int32上使用int的任何技术原因,但它是:

打字更快。 对于典型的c#开发人员来说更加熟悉。 默认visual studio语法高亮显示的不同颜色。

我特别喜欢最后一个。:)

还要考虑Int16。如果你需要在应用程序的内存中存储一个Integer类型,并且你关心使用的内存量,那么你可以使用Int16类型,因为它使用的内存更少,并且比Int32类型的最小/最大范围更小(这就是int类型)。

我总是在定义变量时使用别名类型(int, string等),在访问静态方法时使用真实名称:

int x, y;
...
String.Format ("{0}x{1}", x, y);

看到像int.TryParse()这样的东西似乎很难看。除了风格,我这么做没有别的原因。

一些编译器在不同的平台上对int有不同的大小(不是c#特定的)

一些编码标准(MISRA C)要求所有使用的类型都指定大小(即Int32而不是int)。

为不同类型的变量指定前缀也很好(例如,b表示8位字节,w表示16位字,l表示32位长字=> Int32 lMyVariable)

您应该关心,因为它使您的代码更具可移植性和可维护性。

如果你总是要使用c#,而且c#规范在这方面永远不会改变,那么可移植可能不适用于c#。

可维护的ihmo将始终适用,因为维护代码的人可能不知道这个特定的c#规范,并且错过了int偶尔超过2147483647的错误。

在简单的for循环中,例如计算一年中的月份,您不会关心,但是当您在一个可能会owerflow的上下文中使用该变量时,您应该关心。

您还应该注意是否要对它进行逐位操作。