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


当前回答

我建议使用微软的StyleCop。

它类似于FxCop,但用于与样式相关的问题。默认配置与微软的内部样式指南相匹配,但也可以根据您的项目进行定制。

它可能需要一些时间来适应,但它肯定会使您的代码更好。

您可以将它包含在构建过程中,以自动检查是否违反。

其他回答

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

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

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

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

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

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

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

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

我使用int是为了防止Microsoft将整数的默认实现更改为一些新版本(我们称其为Int32b)。

然后,Microsoft可以将int别名更改为Int32b,我不需要更改任何代码就可以利用他们新的(希望是改进的)整数实现。

这同样适用于任何类型关键字。

int和Int32之间没有区别,但由于int是一个语言关键字,许多人在风格上更喜欢它(就像string vs string)。

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

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

曾经,int数据类型与编译器目标机器的寄存器大小挂钩。例如,16位系统的编译器将使用16位整数。

然而,谢天谢地,我们已经很少看到16位了,当64位开始流行时,人们更关心的是使它与旧软件兼容,32位已经存在了很长时间,对于大多数编译器来说,int只是假设为32位。