C#字段资本化公约

Igo*_*rov 3 c#

我的教科书(Visual C#How to Program,6/e)规定C#中的字段应该使用camelCase.这与Microsoft C#指南中提供的示例相对应:https: //docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/fields

public class CalendarEntry
{
    // private field
    private DateTime date;
    // ...
}
Run Code Online (Sandbox Code Playgroud)

但是官方的Microsoft命名约定明确指出字段应该使用PascalCase(尽管它们没有提供私有字段的例子,因为它们应该是正常的):https://docs.microsoft.com/en-us/dotnet/standard/ 设计指南/市值公约

标识符:字段,外壳:Pascal,示例:

class MessageQueue
{
    public static readonly TimeSpan InfiniteTimeout;
}

public struct UInt32
{
    public const Min = 0;
}
Run Code Online (Sandbox Code Playgroud)

那么,我怎么知道根据MS编码惯例使用什么案例来保持我的编码风格?

Xen*_*oRo 8

AFAIK没有石头会议c#......是的,技术上有一个"官方"惯例,但它并没有100%的时间遵循,即使在MS自己的源代码中,并且它肯定没有被许多程序员和宗教信仰所遵循/或公司.

考虑到这一点,我首选的惯例,以及迄今为止我见过的最好的约定,是ReSharper默认设置的约定.我强烈建议遵循这个惯例:

  • PascalCase用于:类,结构,方法,属性,public | internal | protected字段(无论如何static | readonly | const)和private const字段.
  • _underscorePrefixCamelCase:private_fields(除外const).
  • camelCase for:局部变量.

  • [这是google的最佳结果](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/fields),这当然是正确的(根据定义,因为它是该语言的文档,所以定义的定义是什么).通过阅读各种其他顶级结果,我没有看到任何与之相矛盾的东西. (3认同)