6

我最近开始使用 C#,我注意到约定似乎是变量以大写字母开头以及方法。

这是唯一这样做的语言吗?为什么?例如:

Page Page = new Page();
Page.Action(); 

在其他语言中,您会看到:

Page page = new Page();
page.action();

由于我使用 UML、Ruby、C++ 和 Java 进行了大量工作,因此还有其他一些令人困惑的示例。

我的问题是,当其他语言没有时,为什么 C# 会这样做?

编辑

其他 Stack Overflow 用户注意到 C# 不遵循此约定,这只是我的一个错误。

4

8 回答 8

23

实际上,不:C# 中的约定是针对 camelCased 变量(和字段)名称和 PascalCase 方法:

Page page = new Page();
page.Action();
于 2009-04-29T15:18:10.267 回答
10

不,这是相当非标准的 C# 代码。第 2.6 节中的 .Net Framework 设计指南建议对局部变量名使用驼峰式大小写。

于 2009-04-29T15:19:38.110 回答
7

公共成员使用PascalCase,私人成员使用camelCase

我认为这使得哪些方法支持一个类与哪些方法定义一个类更清楚。

public class Foo
{
    private Bar bar;
    public Bar Bar { get; set; }

    public void DoFoo()
    {
        makeFoo();
    }

    private void makeFoo()
    {
    }
}
于 2009-04-29T15:20:07.063 回答
2

我编写或使用的每组 C# 约定都会为变量指定驼峰式大小写,因此:

Page page = new Page();
MyClass myClass = new MyClass();

不确定您在哪里看到使用 Pascal 大小写,但它肯定不是 C# 固有的或标准的东西。

于 2009-04-29T15:18:50.733 回答
2

C# 中的变量通常不以大写字母开头(尽管这显然取决于开发人员自己的实现)。您可能对Property的概念感到困惑。C# 中的属性在语法上与变量一样使用(因为它们可以被检索或分配,而不仅仅是像函数一样执行),但可以封装两种操作的业务逻辑。

但是,要回答您问题的更广泛部分,根据Microsoft 指南,属性和方法/函数通常都以大写字母开头。

于 2009-04-29T15:19:09.267 回答
2

PascalCase 早在 .NET 之前就已成为 Microsoft 的惯例。(在 Win32 API 等中)

在单个环境中使用约定也很有意义。.NET 本身就是一个综合环境,而微软公司又是另一个,采用其他人的环境确实没有意义。

此外,我强烈怀疑 UML 有命名约定,或者甚至 UML 有命名约定的想法是否有意义。UML 为您的软件建模,并且应该遵循该软件的约定。

于 2009-04-29T15:21:09.650 回答
2

Public = PascalCase,我只倾向于将 camelCase 用于私有字段和参数参数。

阅读这个编码标准,虽然很容易在谷歌上搜索,但不是一个糟糕的起点。

于 2009-04-29T15:23:17.180 回答
2

通过使用以下两个工具,您可以找到很多关于应采用哪些约定的信息。

FxCop: http: //msdn.microsoft.com/en-us/library/bb429476 (VS.80).aspx

StyleCop:http ://code.msdn.microsoft.com/sourceanalysis

于 2009-04-29T15:25:07.410 回答