【发布时间】:2010-10-07 16:03:18
【问题描述】:
在使用 C# 编写我的第一个 asp.net MVC 应用程序时,我看到有一些变量的名称以下划线字符 (_) 开头。
这是什么意思?这有什么具体含义吗?
【问题讨论】:
标签: c# asp.net syntax variables naming-conventions
在使用 C# 编写我的第一个 asp.net MVC 应用程序时,我看到有一些变量的名称以下划线字符 (_) 开头。
这是什么意思?这有什么具体含义吗?
【问题讨论】:
标签: c# asp.net syntax variables naming-conventions
没有语言定义的含义 - 它只是一些人用来区分实例变量和局部变量的约定。其他变体包括 m_foo(和 s_foo 或 g_foo 或静态变量)或 mFoo;或者,有些人喜欢给局部变量(和参数)加上前缀而不是实例变量。
我个人不使用这样的前缀,但这是一种风格选择。只要从事同一个项目的每个人都保持一致,这通常不是什么大问题。我已经看到了一些可怕不一致的代码......
【讨论】:
一般来说,这意味着私有成员字段。
【讨论】:
变量名_val 前的下划线只不过是一种约定。在 C# 中,它用于为公共属性定义私有成员变量。
我会补充@Steven Robbins所说的话:
private string _val;
public string Values
{
get { return _val;}
set {_val = value;}
}
【讨论】:
很多人将它们用于属性私有变量(实际存储公共属性值的变量)。
【讨论】:
以“”开头的实例属性还有另一个优点,它首先显示在 Intellisense 上。
创建值/模型/POCO 类时,我不使用''。
【讨论】:
我知道这有点老了,但如果有人在这里结束,我会在这里添加答案,如果你在 .NET 上谈论 MVC,那么在局部视图上也有一个命名约定以及它们的名称以下划线开头。
这是您和您的团队可以决定遵循或不遵循的命名约定,只要你们所有人都知道该决定。我也将它们用于非公共字段,例如 private 或 protected 只是为了识别它们。
Here's a little brief about it如果您想进一步阅读。
【讨论】:
对属性私有变量使用下划线非常有用,可以避免意外调用变量而不是类本身的属性的情况。 (只需简单的小写智能输入即可轻松完成)
如果您在属性 get{} 中进行某种形式的计算或聚合,那么您最不想做的就是在您打算完整调用该属性时错过这个。
【讨论】:
我已经看到它被用作参数的变量名,而这些参数没有被用作将它们“隐藏”在函数的其余部分之外的一种方式。
我不能说这是一件好事还是坏事,但它有效地表明该参数不会在函数中使用。
【讨论】: