一尘不染

c#:“ System.Object”和“ object”之间的区别

c#

在C#中,System.Object在代码中使用而不是objectSystem.String而不是string或等等之间是否有区别?还是仅仅是风格问题?

有一种理由为什么一种形式优于另一种形式?


阅读 896

收藏
2020-05-19

共1个答案

一尘不染

string是的别名global::System.String。它只是语法糖。两者 正好
在几乎所有情况下可以互换的,而且会在编译的代码没有什么区别。

就个人而言,我将别名用于变量名等,但是我将CLR类型名用于API中的名称,例如:

public int ReadInt32() // Good, language-neutral

public int ReadInt() // Bad, assumes C# meaning of "int"

(请注意,返回类型实际上不是名称,它在元数据中被编码为一种类型,因此这里没有混淆。)

我知道一个可以使用而另一个(我知道)不能使用的地方是:

  • nameof 禁止使用别名
  • 指定枚举基础基础类型时, 只能 使用别名
2020-05-19