| 本帖最后由 卖火柴 于 2013-12-30 22:55 编辑 
 
 C#中属性和字段(变量)的区别 相同点:
 都是类的成员,属性是类的属性,而字段是类色数据成员
 ----------------------------------------------------
 不同点:
 1 属性可进行数据绑定
 2 属性可通过set和get方法进行数据安全性检验,而字段不行
 3 属性可进行线程同步
 public string Name
 {
 set{
 lock(this)
 {
 }
 }
 }
 4 属性可以是抽象的,而字段不行
 5 属性可以接口的形式表现
 6 基于属性的索引
 7 不要直接把字段转化为属性
 实力与对象:类实例化的过程就是创建一个对象,也就是说实例就是对象;字段:类内部用来存储数据
 属性:类提供给外部调用时用的可以设置或读取一个值
 变量:int double bool 等声明的都是变量
 常量:前面多个 const
 成员变量:在类中定义的变量
 局部变量:在方法中定义的变量
 字段变量就是对象公布出来和外界交互数据的变量。
 属性是对一个或多个变量的包装。
 在Java环境中,属性是通过从对象中暴露出来的Set方法和Get来实现的:
 public boolean SetPublicString(string val){this.mPublicString = val;}
 public string GetPublicString(){return this.mPublicString;} 而在DotNet当中,总结了以上的Set和Get方法,直接将其定义成了一个暴露属性,通过对这个属性的访问方式不同(取值还是赋值)而采用不同的代码如以下所示的get代码段和set代码段 变量的定义public string mPublicString;
 属性的定义
 public string PublicString{
 get{return this.mPublicString;}
 set{this.mPublicString = value;}
 }
 因为可以做到使用不同的代码段,所以在访问的时候可以使用更多的逻辑控制来取到或限制需要的值:public string PublicString{
 get{
 if(this.mPublicString.Length>10){
 return this.mPublicString;
 }
 else{
 return "";
 }
 }
 set{
 this.mPublicString = value;
 }
 }
 以上代码的意思是如果访问PublicString时就去查看mPublicString的长度,如果大于10就返回否则就返回空字符串。
 综上就把字段变量mPublicString包装了起来,并不是直接的面向对象的使用者,达到控制的目的。属性的方法中还能写各种复杂的逻辑,因为属性中set或get的代码块等同于SetPublicString和GetPublicString的方法。
 主要区别:
 字段(field):与类或对象相关联的变量,一般访问域为private
 属性(property):字段的封装,通过访问器(accessor)来进行读写操作,一般为public
 一般字段的修饰符有:
 静态字段:static A
 只读字段:readonly A
 一般属性的修饰符:
 virtual
 abstract
 override
 举例说明:
 private System.Int32 _id;
 public System.Int32 id
 {
 get { return _id; }
 set { _id = value; }
 }
 _id就是字段,id就是属性
 字段,field:   public    string    name;
 
 属性,property:
 private    string    _name;
 public    string    name
 {
 get{return    _name;}
 set{_name    =    value;}
 }
 
 只有变量没有成员变量,表示函数内部的临时变量
 属性与成员变量类似,它们都提供数据存储,但属性的功能远比成员变量强大。属性由特殊方法访问。get    和    set    访问器允许在设置或检索属性之后验证属性值、执行其他代码或执行其他任务。而get    和    set    访问器操作的便是字段
 
 |