以_开头的变量名是什么意思?

时间:2009-02-14 19:19:22

标签: c# asp.net syntax variables naming-conventions

使用C#编写我的第一个asp.net MVC应用程序时,我发现有些变量的名称以下划线字符(_)开头。

这是什么意思?这有什么特别的意义吗?

8 个答案:

答案 0 :(得分:49)

没有语言定义的含义 - 它只是一些人用来区分实例变量和局部变量的约定。其他变体包括m_foo(和s_foo或g_foo或静态变量)或mFoo;或者有些人喜欢为局部变量(和参数)添加前缀而不是实例变量。

就个人而言,我不使用这样的前缀,但它是一种风格选择。只要在同一个项目上工作的每个人都是一致的,通常都不是问题。虽然我已经看到了一些可怕的不一致的代码......

答案 1 :(得分:24)

通常,这意味着私有成员字段。

答案 2 :(得分:4)

很多人将它们用于属性私有变量(实际存储公共属性值的变量)。

答案 3 :(得分:2)

变量名_val之前的下划线只不过是一个约定。在C#中,在为公共属性定义私有成员变量时使用它。

我将添加@ Steven Robbins所说的内容:

private string _val;
public string Values
{
    get { return _val;}
    set {_val = value;}
}

答案 4 :(得分:1)

使用''启动实例属性还有另一个优点,它首先显示在Intellisense上。
在创建值/模型/ POCO类时,我不使用'
'。

答案 5 :(得分:1)

在属性私有变量上使用下划线非常有用,可以避免意外调用变量而不是类本身中的属性的情况。 (使用简单的小写的intellisense输入即可轻松完成

如果您在属性get {}中进行某种形式的计算或汇总,那么当您打算完全调用该属性时,最后要做的就是错过这一点。

答案 6 :(得分:0)

我已经看到它用作参数的变量名,而这些参数并没有被用来“隐藏”它们远离函数的其余部分。

我不能说这是好事还是坏事,但它有效地表明参数不在函数中使用。

答案 7 :(得分:0)

我知道这有点旧了,但是如果有人在这里结束,我会在这里添加答案,如果你在谈论.NET上的MVC,也有部分视图的命名约定,也有他们的名字从下划线开始。

这是您和您的团队可以决定遵循或不遵循的命名惯例,只要您们都知道该决定。我也将它们用于非公共字段,如私有或受保护,只是为了识别它们。

Here's a little brief about it如果您想进一步阅读。