我正在阅读有关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 :(得分: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; } }
}
请注意,在这两种情况下,默认情况下这些公主都会很难看。