【问题标题】:Capitalisation conventions for Object / object对象/对象的大写约定
【发布时间】:2014-08-27 22:39:57
【问题描述】:

在c#中,关键字Objectobject可以互换使用。
其他基本类型的工作方式相同:String /string, Double / double, ...

是否有使用其中一个或另一个的约定?

以下是推荐的:

object x = new object();

Object x = new Object();

object x = new Object();

怎么样:

object.ReferenceEquals(a,b);
Object.ReferenceEquals(a,b);

我问主要是因为小写 new object() 在我看来是错误的,但这是我在自动完成 Object x = new ... 时从 Visual Studio 得到的建议

【问题讨论】:

  • 我知道,但是使用一个别名而不是另一个别名的约定是什么?据推测,这些别名的添加是有原因的。
  • What's the difference between String and string? - 此问题中的前 2 个答案应该足以回答您的问题。
  • 如果我不得不冒险猜测一下,添加别名可能只是为了通知您它是“保留”类型,以便您轻松区分 .NET 本机类型和您自己的手动类型类型。至于约定?如果有别名,我会使用它,只是因为我喜欢这种方式:)。
  • 我很难从"What's the difference between String and string?" 中提取我的问题的答案,除非答案是“没有这样的约定”?引用的答案主要涉及System.String,约定部分似乎仅限于“就个人而言,我更喜欢......”。我知道Objectobject 之间没有功能差异,我只是想知道我什么时候会使用其中一个。
  • @HugoRune 该问题中接受的答案提到了 MSDN 示例中使用的样式以及 StyleCop 强制执行。就我而言,没有正式的、适当的惯例。所以我认为这是你能得到的最好的,其余的取决于个人喜好。至于为什么添加别名,也许它们有助于使 C# 更加与语言无关? intlongSystem.Int32System.Int64 更常见。

标签: c# .net object coding-style naming-conventions


【解决方案1】:

在我看来,我喜欢(并推荐)在处理实例时使用 小写 object,例如:

object myVar;
object myVar = new object();
object[] myVar = new object[4];

public void someMethod(object arg);
public object someMethod();

//And so on...

大写 Object 在处理类型或类本身时,即静态方法

例如,

bool result = Object.Equals(obj1, obj2);
string formatted = String.Format(text, arg1, arg2, arg3);

【讨论】:

  • 请注意,Object.static 方法调用的情况下可以省略,因为您在内部的classstructSystem.Object 继承(直接或间接),所以是否包含类名也是一个约定问题。
【解决方案2】:

与大多数编码风格的答案一样,没有“正确的方法”,只有个人意见。虽然我尝试使用理性的论据来得出我的观点。

我的看法是:

  • System.Object 不是严格意义上的 C#,它是 CLR 类型。
  • object 是 C# 关键字。

所以如果我正在编写 C#,我更喜欢使用 C# 语法,而不是底层的 CLR 类型。

另一个主要区别是object 被语法着色为关键字,Object 作为引用类型。我的偏好是对内在函数使用关键字,这样它们看起来就像是内置的东西,而不是用户定义的类型。

第三个区别是object 始终表示相同的含义,而您可以定义自己的类型,称为Object(在与System 不同的命名空间中),这可能更容易导致混淆。

所以总的来说我更喜欢object

对于任何编码风格,我建议的主题是保持一致并具有最简单的可能遵循的规则,因此我建议不要在不同的情况下使用不同的大小写情况。选择一个并坚持下去。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多