私有静态只读字段大写

Jef*_*eff 34 c# naming-conventions

帕斯卡或骆驼案?

我使用驼峰案例命名私有字段和私有静态字段.我用pascal case命名consts(如MS命名约定所示)(无论私有还是公共)....

那么私有静态readonly怎么样?逻辑说骆驼案例...但私有静态只读功能就像一个const ...对吗?

小智 22

在字段名称中使用Pascal大小写 ...

字段的命名准则适用于静态公共字段和受保护字段.您不应定义公共或受保护的实例字段.

MSDN类型成员的名称

只读静态字段= Pascal

MSDN官方命名大会

通用规则:

所有 包含多个单词的公共成员,类型和命名空间名称使用Pascal大小写.

请注意,此规则不适用于实例字段.出于"成员设计指南"中详述的原因,您不应使用公共实例字段.

请使用驼峰套管作为参数名称.

完整清单:

IDENTIFIER             CASE        EXAMPLE
----------------------+-----------+---------------
Class                  Pascal      AppDomain 
Enumeration types      Pascal      ErrorLevel 
Enumeration values     Pascal      FatalError 
Event                  Pascal      ValueChanged 
Exception class        Pascal      WebException 
Read-only static field Pascal      RedValue 
Interface              Pascal      IDisposable 
Method                 Pascal      ToString 
Namespace              Pascal      System.Drawing 
Parameter              Camel       typeName 
Property               Pascal      BackColor 

MSDN官方命名大会

还考虑一下

  • 此列表根本不包括*private*成员或非只读和静态字段. (52认同)
  • 我有一个私有静态只读字段+公共getter.不知道该怎么做,这个约定的名字冲突(以及ReSharper默认提供的约定). (6认同)

cdh*_*wie 9

不,private static readonly根本就不是这样const.考虑:

private static readonly IList<int> foo = new List<int>();
Run Code Online (Sandbox Code Playgroud)

你仍然可以foo.Add(0);.当对象本身以及任何引用的对象是不可变的时,这些字段只是const-like.

  • 但是你无法重新分配私有静态readonly的值...所以你是否认为使用camel case for private static readonly? (2认同)
  • @ORMapper根据StyleCop,它应该是相同的。尽管我不确定StyleCop的Analyzer软件包的行为是否如此,还是这实际上是不合逻辑的规则。我对此感到恼火,无法帮助自己取消对私人警告的警告,并始终使用小写字母。 (2认同)

小智 9

我在StyleCop中收到警告:

    private readonly Color LabelBackColor = Color.Black;
Run Code Online (Sandbox Code Playgroud)

警告364 SA1306:CSharp.Naming:变量名和私有字段名必须以小写字母开头:LabelBackColor.

请参阅此讨论:private readonly字段应以小写字符开头.这意味着Camel案例.

  • 问题是关于私有_static_只读字段,而不是实例字段. (6认同)
  • 根据其 GitHub 页面上的 [此规则](https://github.com/StyleCop/StyleCop/blob/master/Project/Docs/Rules/SA1311.html),StyleCop 建议静态只读字段以大写字母开头。 (5认同)

Cag*_*lan 5

这是一个示例参考源。有趣的是,微软在这里对私有字段使用下划线,对私有静态只读http://referencesource.microsoft.com/#mscorlib/system/collections/arraylist.cs,3e3f6715773d6643使用驼峰式(无下划线)。但第二个例子也表明,微软没有自己的字段命名标准:http : //referencesource.microsoft.com/#mscorlib/system/collections/hashtable.cs