对于属性中使用的变量,是否有任何C#命名约定?

Geo*_*sen 45 c# properties

比方说,我们有一个变量,我们想要命名 Fubar

让我们说这Fubar是一个String!

这意味着,我们将Fubar定义为:

public string Fubar;
Run Code Online (Sandbox Code Playgroud)

现在,假设我们想要Fubar一个getter和setter(换句话说,成为一个C#属性)!

private string Fubar;
public string Fubar_gs
{
    get
    {
        //Some fancy logic
        return Fubar;
    }
    set
    {
        //Some more fancy logic
        Fubar = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

好极了!这一切都很好,花花公子,除了我想要将PROPERTY命名为Fubar,而不是原始变量怎么办?

很明显,我只想重命名这两个变量.但问题是,原始变量的最佳名称是什么?

这种情况是否有命名惯例?

Dan*_*ann 128

根据Microsoft的命名约定,正确的方法是:

private string fubar;
public string Fubar { get { return fubar; } set { fubar = value; } }
Run Code Online (Sandbox Code Playgroud)

然而,许多人更喜欢在私有字段前加上下划线,以帮助最小化错误大写的可能性,并在他们打算使用该属性时使用该字段,反之亦然.

因此,常见的是:

private string _fubar;
public string Fubar { get { return _fubar; } set { _fubar = value; } }
Run Code Online (Sandbox Code Playgroud)

你采取的方法最终取决于你.StyleCop默认强制执行前者,而ReSharper将强制执行后者.

在C#6中,有一种新的语法,用于声明属性的默认值或创建只读属性,减少对具有支持字段的属性的需求,这些支持字段在getset方法中没有任何特殊的附加逻辑.你可以简单地写:

public string Fubar { get; set; } = "Default Value";

要么

public string Fubar { get; } = "Read-only Value";

  • 在[Microsoft命名**GUIDELINES**](https://msdn.microsoft.com/en-us/library/ms229012%28v=vs.110%29.aspx)上声明_internal和private字段未涵盖指南_与这篇文章略有矛盾. (4认同)

Kei*_*las 8

使用下划线为private添加前缀 _Fubar

  • 不,请不要使用任何下划线. (4认同)
  • 我认为你的意思是"使用任何下划线[原文如此],请不要" (4认同)
  • 下划线前缀的好处之一是,在实例方法内部,可以立即明显看出引用是否是私有字段,而不是方法属性。 (2认同)

Bel*_*ris 7

如果您将私有变量命名为小写,则可以右键单击它们并让VS为您生成getter/setter代码;

重构 - > Enacpsulate Field ...

它将使用Caps命名该属性.

  • 不是问题的答案,而是 +1 以获得很好的提示。 (2认同)

Aus*_*nen 6

如果getter/setter中没有逻辑,请使用auto-property:

public string Fubar {get; set;}
Run Code Online (Sandbox Code Playgroud)

http://msdn.microsoft.com/en-us/library/bb384054.aspx


uce*_*ern 5

嗯,框架设计指南文档指出了以下内容:

\n\n
\n

字段名称 字段命名准则适用于静态公共字段和\n 受保护字段。准则不涵盖内部和私有字段,并且成员设计准则不允许公共或受保护的实例字段。

\n\n

\xe2\x9c\x93 请在字段名称中使用 PascalCasing。

\n\n

\xe2\x9c\x93 请使用名词、名词短语或形容词来命名字段。

\n\n

X 不要对字段名称使用前缀。

\n\n

例如,不要使用“g_”或“s_”来指示静态字段。

\n
\n\n

所以,对于私人领域,没有官方推荐。但是,如果您对某个属性使用 VS 2017 快速操作“转换为完整属性”,则会发生这种情况:

\n\n

VS 2017快速行动“转换为完整财产”

\n\n

因此,似乎可以安全地假设用下划线作为私有字段前缀在某种程度上是标准的。

\n