在C#中,int
并且Int32
是同样的事情,但我读了许多那个时代int
优于Int32
没有给出理由.有原因,我应该关心吗?
这两者确实是同义词; int
将会更加熟悉,Int32
使32位读取代码更加明确.我倾向于使用int
我只需要"整数"的地方,Int32
其中大小很重要(加密代码,结构),所以未来的维护者会知道int
在适当的情况下放大一个是安全的,但是应该注意Int32
以同样的方式改变.
结果代码将是相同的:差异纯粹是可读性或代码外观之一.
ECMA-334:2006 C#语言规范(第18页):
每种预定义类型都是系统提供的类型的简写.例如,关键字
int
引用结构System.Int32
.作为一种风格问题,使用关键字比使用完整的系统类型名称更受青睐.
它们都声明了32位整数,并且正如其他海报所述,你使用哪一个主要是语法风格.然而,它们并不总是以相同的方式行事.例如,C#编译器不允许这样:
public enum MyEnum : Int32 { member1 = 0 }
但它会允许这样:
public enum MyEnum : int { member1 = 0 }
去搞清楚.
我总是使用系统类型 - 例如,Int32而不是int.我在阅读了应用.NET Framework编程后采用了这种做法- 作者Jeffrey Richter为使用完整类型名称提供了一个很好的案例.以下是与我相关的两点:
类型名称可能因.NET语言而异.例如,在C#中,Int32
映射到System.Int64,而在C++中使用托管扩展,int
映射到Int32.由于语言可以在使用.NET时进行混合和匹配,因此无论读者的首选语言如何,您都可以确保使用显式类名称将更加清晰.
许多框架方法都将类型名称作为其方法名称的一部分:
long
long
Int32
int是一个C#关键字,是明确的.
大多数时候它没关系,但有两件事与Int32相反:
你需要一个"使用系统"; 声明.使用"int"不需要using语句.
可以定义自己的类Int32(这将是愚蠢和混乱).int总是表示int.
如前所述,int
= Int32
.为了安全起见,请确保在实现任何关心数据类型边界的内容时始终使用int.MinValue
/ int.MaxValue
.假设.NET决定int
现在Int64
,你的代码将更少依赖于边界.
当你只需要处理一种语言时,类型的字节大小就不那么有趣了(对于那些你不必提醒自己有关数学溢出的代码).变得有趣的部分是当你在一种语言与另一种语言之间架起桥梁,C#与COM对象等等,或者你正在做一些变换或掩盖,你需要提醒自己(和你的代码审查共同工作者)的数据大小.
在实践中,我通常使用Int32来提醒自己它们的大小,因为我编写了托管C++(例如桥接到C#)以及非托管/本机C++.
只要您知道,C#是64位,但在本机C++中,它最终为32位,或者char为unicode/16位,而在C++中则为8位.但我们怎么知道呢?答案是,因为我们在手册中查了一遍,并且说了这么多.
有了时间和经验,当你编写代码以便在C#和其他语言之间架起桥梁时,你会开始变得更加认真(这里的一些读者会想"为什么会这样?"),但恕我直言,我相信这是一种更好的做法,因为我不记得上周我编写的内容(或者我不必在我的API文档中指定"此参数是32位整数").
在F#中(尽管我从未使用它),它们定义了int,int32和nativeint.同样的问题应该出现,"我使用哪一个?".正如其他人所提到的,在大多数情况下,它应该无关紧要(应该是透明的).但我会选择int32和uint32来消除歧义.
我想这将取决于您正在编码的应用程序,使用者,您和您的团队遵循的编码实践等,以证明何时使用Int32.
int
和之间没有区别Int32
,但是int
语言关键词很多人都喜欢它风格(就像string
vs一样String
).
根据我的经验,这是一个常规的事情.我不知道在Int32上使用int的任何技术原因,但它是:
键入更快.
对典型的C#开发人员比较熟悉.
默认visual studio语法高亮显示中的不同颜色.
我特别喜欢最后一个.:)
在定义变量时我总是使用别名类型(int,string等),并在访问静态方法时使用实名:
int x, y; ... String.Format ("{0}x{1}", x, y);
看到类似int.TryParse()的东西似乎很难看.除了风格之外别无他法.
我知道最好的做法是使用int,所有MSDN代码都使用int.但是,据我所知,没有超出标准化和一致性的理由.
虽然它们(大多数)是相同的(参见下面的[bug]差异),你绝对应该关心并且你应该使用Int32.
Int-16的整数名称为Int16.对于64位整数,它是Int64,对于32位整数,直观的选择是:int或Int32?
Int16,Int32或Int64类型的变量大小的问题是自引用的,但int类型变量大小的问题是一个完全有效的问题,无论多么微不足道,问题都会分散注意力,导致混淆,浪费时间,阻碍讨论等(这个问题存在的事实证明了这一点).
使用Int32可以促使开发人员意识到他们选择的类型.再一次int有多大?哦是的,32.当名称中包含大小时,实际考虑类型大小的可能性更大.使用Int32还可以提升对其他选择的了解.当人们不被迫至少认识到有替代品时,int变得太容易变成"整数型".
用于与32位整数交互的框架中的类名为Int32.再次,它是:更直观,减少混乱,缺乏一个(不必要的)翻译(而不是在系统中的翻译,但在开发商的头脑)等 int lMax = Int32.MaxValue
或Int32 lMax = Int32.MaxValue
?
int不是所有.NET语言中的关键字.
虽然有争议为什么它不可能永远不会改变,但int可能并不总是Int32.
缺点是要输入两个额外字符和[bug].
这不会编译
public enum MyEnum : Int32 { AEnum = 0 }
但这会:
public enum MyEnum : int { AEnum = 0 }