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