使用C#编写我的第一个asp.net MVC应用程序时,我发现有些变量的名称以下划线字符(_)开头。
这是什么意思?这有什么特别的意义吗?
答案 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如果您想进一步阅读。