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

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】:

我已经看到它被用作参数的变量名,而这些参数没有被用作将它们“隐藏”在函数的其余部分之外的一种方式。

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

【讨论】:

以上是关于以_开头的变量名是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

STM32示例中变量名开头的“uw”是啥意思?

Angular 2:变量名是啥?意思是?

在python中,双星后跟变量名是啥意思? [复制]

以“_”开头的变量是啥类型变量?

以下合法的变量名是______(JS)

SAS中的宏变量开头和结尾分别是啥命令?