那么多的get set有什么用?
为什么要get set 直接定义一个变量不就行了?using System;namespace tour.Model
{
public class TourLine
{
private int _Id;
private string _Name;
private int _LineType;
private string _StartCity;
private string _StartDate;
private string _SignupEndDate;
private int _Price;
private string _Note;
private string _InFeeNote;
private string _NoinFeeNote;
private int _DayNum;
private DateTime _CreateDate;
private string _Images;
private int _IsCommend;
private string _Tips;
private int _IsIndex;
private int _Status;
public virtual int Id
{
get { return _Id; }
set { _Id = value; }
}
public virtual string Name
{
get { return _Name; }
set { _Name = value; }
}
public virtual int LineType
{
get { return _LineType; }
set { _LineType = value; }
}
public virtual string StartCity
{
get { return _StartCity; }
set { _StartCity = value; }
}
public virtual string StartDate
{
get { return _StartDate; }
set { _StartDate = value; }
}
public virtual string SignupEndDate
{
get { return _SignupEndDate; }
set { _SignupEndDate = value; }
}
public virtual int Price
{
get { return _Price; }
set { _Price = value; }
}
public virtual string Note
{
get { return _Note; }
set { _Note = value; }
}
public virtual string InFeeNote
{
get { return _InFeeNote; }
set { _InFeeNote = value; }
}
public virtual string NoinFeeNote
{
get { return _NoinFeeNote; }
set { _NoinFeeNote = value; }
}
public virtual int DayNum
{
get { return _DayNum; }
set { _DayNum = value; }
}
public virtual DateTime CreateDate
{
get { return _CreateDate; }
set { _CreateDate = value; }
}
public virtual string Images
{
get { return _Images; }
set { _Images = value; }
}
public virtual int IsCommend
{
get { return _IsCommend; }
set { _IsCommend = value; }
}
public virtual string Tips
{
get { return _Tips; }
set { _Tips = value; }
}
public virtual int IsIndex
{
get { return _IsIndex; }
set { _IsIndex = value; }
}
public virtual int Status
{
get { return _Status; }
set { _Status = value; }
}
}
}
为什么要get set 直接定义一个变量不就行了?using System;namespace tour.Model
{
public class TourLine
{
private int _Id;
private string _Name;
private int _LineType;
private string _StartCity;
private string _StartDate;
private string _SignupEndDate;
private int _Price;
private string _Note;
private string _InFeeNote;
private string _NoinFeeNote;
private int _DayNum;
private DateTime _CreateDate;
private string _Images;
private int _IsCommend;
private string _Tips;
private int _IsIndex;
private int _Status;
public virtual int Id
{
get { return _Id; }
set { _Id = value; }
}
public virtual string Name
{
get { return _Name; }
set { _Name = value; }
}
public virtual int LineType
{
get { return _LineType; }
set { _LineType = value; }
}
public virtual string StartCity
{
get { return _StartCity; }
set { _StartCity = value; }
}
public virtual string StartDate
{
get { return _StartDate; }
set { _StartDate = value; }
}
public virtual string SignupEndDate
{
get { return _SignupEndDate; }
set { _SignupEndDate = value; }
}
public virtual int Price
{
get { return _Price; }
set { _Price = value; }
}
public virtual string Note
{
get { return _Note; }
set { _Note = value; }
}
public virtual string InFeeNote
{
get { return _InFeeNote; }
set { _InFeeNote = value; }
}
public virtual string NoinFeeNote
{
get { return _NoinFeeNote; }
set { _NoinFeeNote = value; }
}
public virtual int DayNum
{
get { return _DayNum; }
set { _DayNum = value; }
}
public virtual DateTime CreateDate
{
get { return _CreateDate; }
set { _CreateDate = value; }
}
public virtual string Images
{
get { return _Images; }
set { _Images = value; }
}
public virtual int IsCommend
{
get { return _IsCommend; }
set { _IsCommend = value; }
}
public virtual string Tips
{
get { return _Tips; }
set { _Tips = value; }
}
public virtual int IsIndex
{
get { return _IsIndex; }
set { _IsIndex = value; }
}
public virtual int Status
{
get { return _Status; }
set { _Status = value; }
}
}
}
例:如只有get.
则该属性就是只读的.
简单的讲,使用get/set时可以做处理,而直接读取/设置字段值时不能做任何处理
先是赋值给value(相当一个存储空间),然后再用get{}返回给变量,实际上也就是一次改变变量值的过程
就像一楼说的如只有get.则该属性就是只读的.
如果get和set都有,那么在使用的时候跟使用Public成员变量差不多,但是如果要将成员变量对外公开,则最好将其定义为属性。
举个例子,比如复数类的实例3+4i,要得到复数的角度,先用反正切atan算出弧度,再乘以180/pi得到角度。那么代码可以为:
public double angle
{
get
{
return System.Math.Atan(虚部/ 实部) * 180 / System.Math.PI;
}
}
不提供真正实现,
看看到 msdn吧
首先virtual是虚的,但并不是不提供真正实现virtual:虚方法/属性,提供实现,但是子类可以override;
abstract:抽象方法/属性,不提供实现,子类必须override。get,set这是C#里属性的实现方式,更好的体现了面向对象的封装特点。你问get set有什么用,还不如去研究下面向对象为什么提倡封装。Encapsulate what varies,这是面向对象设计的一条重要原则。