在Juides Lowy的"C#编码标准"中,可以从www.idesign.net获得,推荐使用C#预定义类型而不是System命名空间中的别名.
object NOT Object
string NOT String
int NOT Int32
Run Code Online (Sandbox Code Playgroud)
这有什么好处?他们有什么不同?我在自己的编码中遵循了这个建议,但从未知道它们有何不同.
Mar*_*ell 16
主时他们意外地不同的是,当有人愚蠢到调用类型(或属性/场/等)String(例如),因为string 总是指的是global::System.String,在那里,因为String可以YourNamespace.String.
你最接近C#别名的是@string,它往往会像拇指一样伸出来.
我更喜欢C#别名.
顺便说一句,这是一个有趣的方式来惹恼任何使用dynamic太多的人:
using dynamic = System.Object;
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 13
他们并没有真正的区别.我个人也使用别名,但杰夫里希特提倡恰恰相反.生成的代码将完全相同.使用您认为最具可读性的(并尝试保持一致).
大多数人都同意的一件事是:在编写API时,请使用类型名称而不是别名,因此:
int ReadInt32()
Run Code Online (Sandbox Code Playgroud)
而不是
int ReadInt()
Run Code Online (Sandbox Code Playgroud)
这int部分并不重要 - 它不是名称的一部分,可以使用任何语言适当地显示给任何消费者......但方法名称应该是语言中立的,这意味着使用类型名称.
您必须使用别名的一个地方是指定枚举的基础类型:
enum Foo : byte // Valid
enum Foo : System.Byte // Invalid
Run Code Online (Sandbox Code Playgroud)
除了乔恩在这里说的另一个区别.
var x = (Int32)-y; // Does not compile.
var x = (int)-y; // Negates the value of y and casts as an int.
Run Code Online (Sandbox Code Playgroud)
这是因为C#编程语言规范的第7.6.6节中定义的语法消歧规则.
| 归档时间: |
|
| 查看次数: |
3467 次 |
| 最近记录: |