为什么我们在变量名中使用_?

Ser*_*yro 34 programming-languages

我见过像_ image这样的变量,想知道_是什么意思?

Ava*_*vra 60

这并不意味着什么.私有成员变量的常见命名约定是将它们与方法和公共属性分开.例如:

class Foo
{
   private int _counter;

   public int GetCounter()
   {
      return _counter;
   }

   public int SetCounter(int counter)
   {
      _counter = counter;
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 不,这不是惯例。在 C# 中, _ 变量样式是一个遗留问题 _(记不清它来自哪里,一些旧参考书确实提到过。)_ 它甚至在像 _ abc.cshtml 这样的视图中使用,但问题是,有旧框架/系统存在一些问题,现在较新的点网不需要任何像这样的愚蠢的东西,它是从遗留的损坏的东西中提出的。_variable 的唯一用例是当您想要避免 C# get set 访问器与私有成员之间的名称冲突时。但是,除非您的 get set 访问器具有验证逻辑,否则您很少使用它。 (2认同)

And*_*ark 19

在大多数语言_中,除了字母和数字之外,变量名中允许的唯一字符.以下是一些常见用例:

  • 分词: some_variable
  • 私有变量以下划线开头: _private
  • 最后添加以区别于内置名称:( filter_因为filter是内置函数)
  • 在循环期间,它本身作为未使用的变量: [0 for _ in range(n)]

请注意,有些人真的不喜欢最后一个用例.


Jon*_*eet 11

有些人用它来表示它们变量而不是(比方说)方法名称.或者明确表示它们是实例变量而不是局部变量.有时您会看到额外的前缀,例如

private int m_age; // Member (instance) variable
private static int g_maxAge; // Global (static) variable
Run Code Online (Sandbox Code Playgroud)

这只是一个惯例.我打算说"没有什么神奇的东西",但这并不完全正确 - 在某些语言中,双重下划线是为"特殊"用途而保留的.(具体用法取决于当然的语言.)

编辑:双下划线规则的示例,因为它适用于C#.从C#4规范,第2.4.2节:

包含两个连续下划线字符(U + 005F)的标识符保留供实现使用.例如,实现可能会提供以两个下划线开头的扩展关键字.