get{}set{}的定义问题?
一直都这么做,但还是不知道为什么?
比如:
public class Port
{
private int _pID;
private string _pName;
private string _pPerUnit;
private int _total;
public int pID
{
get { return _pID; }
set { _pID = value; }
}
public string pName
{
get { return _pName; }
set { _pName = value; }
}
........
为什么要用get和set再加上value转一次呢?
为什么不把索引直接定义成:
public string pName;
这一个value的传入过程是怎么一个原理?
------解决方案--------------------转自:
http://www.microsoft.com/china/msdn/library/langtool/vcsharp/EffectiveCsharp.mspx?mfr=true
学习研究.NET的早期,经常碰到一些学习C#/.NET的朋友问,要属性这种华而不实的东西做什么?后来做项目时也时常接到team里的人的抱怨反馈,为什么不直接放一个public字段?
使用属性,避免将数据成员直接暴露给外界
使用属性的理由:
1.可以对赋值做校验、或者额外的处理
2.可以做线程同步
3.可以使用虚属性、或者抽象属性
4.可以将属性置于interface中
5.可以提供get-only或者set-only版本,甚至可以给读、写以不同的访问权限(C# 2.0支持)
------解决方案--------------------赋值器可以方便你进行控制 就如同 别人问你是什么人
是你掏出身份证给他看 你可以决定给什么人看 怎么给
还是所有人都直接去你口袋掏身份证看 2种方式