今天在看asp.net mvc3.0的入门教程看到里面的实体类的属性是这么写的
public int ID { get; set; }
public string Title { get; set; }
public DateTime ReleaseDate { get; set; }
public string Genre { get; set; }
public decimal Price { get; set; } 弱弱的问一句,这是.NET4.0新特性吗???如果给属性赋值,这值存在哪啊 ??因为我习惯这样写private int _id;
public int ID{get{return _id;}set{_id=value;}
public int ID { get; set; }
public string Title { get; set; }
public DateTime ReleaseDate { get; set; }
public string Genre { get; set; }
public decimal Price { get; set; } 弱弱的问一句,这是.NET4.0新特性吗???如果给属性赋值,这值存在哪啊 ??因为我习惯这样写private int _id;
public int ID{get{return _id;}set{_id=value;}
还想问一句,如果这样写 public string Genre { get; } ,那岂不是在一个类的内部无法给这个属性赋值了?
如果你要在类的内部给它赋值,但是你又不想让这个类外部的调用者来赋这个值,那么你可以这样定义:
public string Genre { get; private set; }你看,这样写真的是很优雅,而且访问控制做得很好。
你的这种比较“古典”的写法,其实也是很好处的,好处在哪里呢?在于设定一个属性的初始值(默认值)。
比如:private int _id = 5;
public int ID
{
get { return this._id; }
set { this._id = value; }
}
而那种比较新颖的写法public int ID { get; set; }就无法在这里指定初始值(默认值),只能在类初始化里面显式地设定初始值。
另外,那种“古典”的写法还常常可以这样用:private List<CyclePoint> points = null;public List<CyclePoint> Points
{
get
{
if(this.points == null)
{
this.points = new List<CyclePoint>();
} return this.points;
}
}
这也是很常见的一种优雅的做法。