日期:2014-05-20  浏览次数:21001 次

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种方式