C#和VB.NET带有映射到CLR类型的内置类型。例如:int(C#)和Integer(VB)映射到System.Int32,long(C#)和Long(VB)映射到System.Int64。决定何时使用内置类型或不使用它们的最佳实践是什么(使用System。* structs / classes代替)?
答案 0 :(得分:37)
我几乎总是使用内置别名,例如int / short / long。它们更易于阅读,并且不需要您导入系统或在任何地方键入System.Int32等。
语言清楚地定义了它们,并赋予它们特定的含义,所以我没有看到任何伤害。但是,这是100%的个人选择。
话虽如此 - 我明确使用Int32,Int16等的地方,就是我正在处理二进制存储或传输,尤其是自定义二进制格式。在这种情况下,让每个成员进入和离开文件的显式bitsize使代码更易读和理解,IMO。
答案 1 :(得分:15)
语言类型(例如string,int,char)只是CLR类型的别名(System.String,System.Int32,System.Char)。
它们是可以互换的,没有必要优先选择其中一个。
修改强>
海报要求在两者之间做出选择时提供一些帮助。
我个人倾向选择C#语言类型(int,string,char等),因为它们涉及较少的输入 - 我想我只是懒惰:)
答案 2 :(得分:14)
我唯一一次明确地使用“System.XYZ"
优先于内置类型关键字是我需要一个特定大小的整数类型,我希望任何读取我的代码的人都清楚这一点(例如,如果所讨论的整数实际上是4个8位字段打包在一起,我可能会使用Int32
而不是int
。)
答案 3 :(得分:5)
我总是使用System.*
类型,因为它们在其他类之间看起来更加一致 - 大写首字母和相同的语法突出显示。但这只是个人偏好,只是一个美学问题。
答案 4 :(得分:2)
使用“int”和“Int32”(以及其他)完全相同。通常使用关键字(int,Integer(vb.net),bool等...),因为它更短并在IDE中突出显示。
答案 5 :(得分:1)
而不是何时使用或不使用语言类型与显式BCL类名称,更重要的是要知道您打算使用的类型是否符合CLS。
具体来说,无符号整数类型不符合CLS,因为不要求语言支持无符号整数数学。
除了这种皱纹......我会建议哪种成语更符合您的组织代码实践。如果你完全命名你的类型引用,那么我会继续使用System。*命名空间...(我也建议不要这样做,因为它增加了读者的负载而没有附带的清晰度增益)。