以下划线开头的对象名称

时间:2012-02-02 22:18:53

标签: c# asp.net-mvc

我正在阅读有关MVC的教程 - Linq to SQL。在这里,我注意到他们在对象名称(对象名称中的第一个字符)中使用下划线,例如“_dataContext”

以下是代码:

using System.Collections.Generic;
using System.Linq;

namespace MvcApplication1.Models
{
         public class MovieRepository : IMovieRepository
         {
              private MovieDataContext _dataContext;

              public MovieRepository()
              {
                    _dataContext = new MovieDataContext();
              }

              #region IMovieRepository Members

              public IList<Movie> ListAll()
              {
                   var movies = from m in _dataContext.Movies
                        select m;
                   return movies.ToList();
              }

              #endregion
         }
     }

我的问题是,使用这个下划线的目的是什么?

6 个答案:

答案 0 :(得分:6)

  

我的问题是,使用这个下划线的目的是什么?

没有技术目的。这仅仅是某些人用来指定私有字段的惯例。它完全是可选的,仅仅是一种风格选择。

答案 1 :(得分:1)

按照惯例,下划线表示私人会员,但没有实际效果。此外,任何以下划线开头的非私有成员都会抛出编译器警告。

答案 2 :(得分:1)

这样你就不必进入堆栈溢出,解释为什么这会给你一个堆栈溢出

private int someValue;

public int SomeValue {get {return someValue; } set {SomeValue = value;}}

名称因案例而异,不喜欢......

答案 3 :(得分:0)

基本上可以一目了然地区分类级字段和局部变量以及方法参数。

答案 4 :(得分:0)

从其他类型的字段描述私有实例变量。这是一个惯例;没有语义价值。

BTW,“官方”MS C#编程指南建议使用私有类变量的驼峰案例。决定取决于您和您的团队,但我个人不喜欢它,因为名称经常与方法参数冲突。我自己使用下划线,但同样,使用最适合您和代码的其他维护者的任何东西。唯一的硬性规则是保持一致。

答案 5 :(得分:0)

我已经看到这用于程序员具有VB.NET背景的项目中:因为VB大部分不区分大小写,这将有助于区分字段和属性(即,它是一种表示私有字段的编码约定,我认为)

VB程序员会写:

Public Class Princess
  Private _pretty
  Public ReadOnly Property Pretty As Boolean
      Get
          Return _pretty
      End Get
  End Property
End Class

而C#程序员可能会写

public class Princess 
{
  private bool pretty;
  public bool Pretty { get { return pretty; } }
}

请注意,在这两种情况下,默认情况下这些公主都会很难看。

相关问题