在c#中,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#类型都将保持当前的映射。”

其他回答

int与System相同。Int32,当编译时,它将在CIL中变成相同的东西。

我们在c#中按照惯例使用int,因为c#希望看起来像C和c++(以及Java),这就是我们在那里使用的……

顺便说一句,我最终使用的是系统。Int32时声明各种Windows API函数的导入。我不确定这是否是一个定义的约定,但它提醒我,我要去一个外部DLL…

前一段时间,我在微软做一个项目,当时微软。net CLR产品团队的人来拜访我们。这个人编写了例子,当他定义变量时,他使用“Int32”与“int”和“String”与“String”。

我记得在微软的其他示例代码中见过这种样式。所以,我做了一些研究,发现每个人都说“Int32”和“int”之间没有区别,除了语法着色。事实上,我发现很多材料都建议您使用“Int32”使您的代码更具可读性。所以,我采用了这种风格。

前几天我确实发现了不同!编译器不允许你使用" Int32 "输入enum,但当你使用" int "时,它允许你输入enum。别问我为什么,因为我还不知道。

例子:

public  enum MyEnum : Int32
{
    AEnum = 0
}

这个作品。

public enum MyEnum : int
{
    AEnum = 0
}

取自:Int32符号vs. int

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

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

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

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

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

我建议使用微软的StyleCop。

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

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

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