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

Pao*_*sco 71 c# coding-style

在C#中,使用System.Object代码而不仅仅是object,或者System.String不是string等等有什么区别?或者只是风格问题?

是否有理由说一种形式对另一种形式更有利?

Jon*_*eet 68

string是别名global::System.String.这只是语法糖.在几乎所有情况下,这两者完全可以互换,并且编译代码没有区别.

我个人使用别名作为变量名称等,但我在API中使用CLR类型名称作为名称,例如:

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

public int ReadInt() // Bad, assumes C# meaning of "int"
Run Code Online (Sandbox Code Playgroud)

(请注意,返回类型实际上并不是名称 - 它被编码为元数据中的类型,因此不存在混淆.)

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

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

  • 关于公共API的语言中立性的评论非常有趣! (9认同)
  • 为了关闭FxCop,这样做非常值得 (3认同)
  • @Stilgar:这就是为什么我的回答使用int/Int32而不是string/String.是的,它与String/Object/Decimal/Double/Byte/SByte无关 - 但它对所有其他内容都很重要. (2认同)

Sor*_*oot 7

对象类型是别名System.Object的.使用对象类型并将其显示为关键字.我认为它与遗产有关,但这只是一个疯狂的猜测.

有关所有详细信息,请查看此MSDN页面.

我更喜欢使用小写版本,但没有特殊原因.仅仅因为语法高亮在这些"基本"类型上是不同的,我不必在键入时使用shift键...


Joh*_*lan 6

一个是另一个的别名.它的风格.