string vs System.String,int vs System.Int32:另一个Alias vs Type Name问题

Dmi*_*ezo 2 .net c# code-conversion

很多时候,我看到那里的语言的关键字与完整的类型名称进行替换源代码: System.String,System.Int32,System.GUID等.

此外,执行此操作的人在任何地方都写出完整的类型名称,使得源代码充满了这样的声明:

System.Collections.Generic.List<System.Reflection.PropertyInfo> list = System.Collections.Generic.List<System.Reflection.PropertyInfo>(newSystem.Reflection.PropertyInfo[] { ... });
Run Code Online (Sandbox Code Playgroud)

当我问他们为什么这样做时,我得到了广泛的答案:"这有助于我避免类型名称冲突","它看起来更专业","我的VS插件自动为我做"等.

据我所知,using如果在整个源代码文件中使用类型一次,有时编写完整类型名称可以帮助您避免编写不必要的内容.有时您需要明确声明一个类型,一个很好的例子是Threading Timer和WinForms Timer.

但是如果你完整的数据库调用来源而你仍然在编写System.Data.SqlClient.SqlCommand而不是'SqlCommand',那对我来说看起来有点奇怪.

你怎么看?我是对的还是我只是不明白的东西?

谢谢!

PS而另一种现象是写作if (0 != variable而不是if (variable != 0).

Jus*_*tin 6

if (0 == variable)是一个C++约定,用于防止意外写入if (variable = 0),这在C++中是有效的,但不能达到预期目的.它在C#中完全不必要,因为错误的版本无法编译,所以你应该使用其他版本,因为它读得更好.

就个人而言,我喜欢尽可能少地写,所以除非有命名空间冲突,否则我永远不会完全符合条件.

至于stringvs String,我总是使用别名(string/ int)而不是完整的类名,但它纯粹是一种约定 - 没有运行时差异.