2012-02-02 43 views
1

我正在阅读关于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 
     } 
    } 

我的问题是,什么是使用这个的目的强调?

+0

相关阅读:[成员变量的下划线前缀。 intellisense](http://stackoverflow.com/q/833811) – 2012-02-02 22:22:36

回答

6

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

无技术目的。这仅仅是一些人用来指定私人领域的惯例。它完全是可选的,只是一种风格选择。

+4

我发现它的最大优点是,intellisense /调试窗口进行排序,所以所有的支持字段一起出现在一个地方。我发现的最糟糕的优势是它能够激起关于编码风格的激烈辩论。 – 2012-02-02 22:28:13

+0

@HansJonus我同意 - 编码风格非常个人化。我个人使用较低的骆驼案例,但仅仅是因为StyleCop会强制执行此操作,并且有一个工具可帮助保证项目的一致性。但是,在这里使用任何约定都没有技术上的理由。 – 2012-02-02 22:36:48

0

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

0

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

顺便说一句,“官方”MS C#编程指南建议骆驼案例为私人类变量。这个决定取决于你和你的团队,但是我个人不喜欢它,因为名称经常会与方法参数相冲突。我自己使用下划线,但是再次使用最适合您和代码的其他维护者的任何工具。唯一的硬性规定是一致的。

1

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

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; } } 
} 

注意,在这两种情况下,这些类型的默认公主将是丑陋的。

+1

有点不对劲,叫我VB程序员!:D – 2012-02-02 22:53:31

+0

C#程序员不会在同一行上放置大括号({) – MyKuLLSKI 2012-02-03 07:25:31

+0

@MyKuLLSKI同意这样做,主要是为了使示例代码更简洁一些。尽管编辑它虽然! – Jeroen 2012-02-03 09:16:18

1

它,所以你不必来堆栈溢出,解释为什么这给你一个堆栈溢出

private int someValue; 

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

名字只是不同的情况下,不喜欢......

+0

好吧,先生:) – 2012-02-02 23:57:53

相关问题