【问题标题】:What does variable names beginning with _ mean?以_开头的变量名是什么意思?
【发布时间】:2010-10-07 16:03:18
【问题描述】:

在使用 C# 编写我的第一个 asp.net MVC 应用程序时,我看到有一些变量的名称以下划线字符 (_) 开头。

这是什么意思?这有什么具体含义吗?

【问题讨论】:

    标签: c# asp.net syntax variables naming-conventions


    【解决方案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】:

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

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

              【讨论】:

                猜你喜欢
                • 2011-06-11
                • 2018-10-08
                • 2010-12-02
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2022-12-11
                • 2018-08-18
                相关资源
                最近更新 更多