属性和字段的区别

来源:互联网 发布:木秀于林风必助之知乎 编辑:程序博客网 时间:2024/06/05 02:00
属性和字段的区别
    在C#中,我们可以非常自由的、毫无限制的访问公有字段,但在一些场合中,我们可能希望限制只能给字段赋于某个范围的值、或是要求字段只能读或只能写,或是在改变字段时能改变对象的其他一些状态,这些单靠字段是无法做到的,于是就有了属性,属性中包含两个块:set和get,set块负责属性的写入工作,get块负责属性的读取工作。在两个块中都可以做一些其他操作,如在set中验证赋的值是否符合要求并决定是否进行赋值。当缺少其中一块时属性就只能读或只能写,set和get块中属性必需有一个,因为即不能读又不能写的属性是没有意义的。
class MyClass
{
       Private  string  name;
       public string Name
      {
         get {return Name;} 
         set {Name=value;}
      }
 }
(1)属性可以保证安全,当不在本类中使用时可以保证使用属性名可以避免用字段的名字。
(2)属性的set和get函数可以限制字段的一些功能,以达到某种目的。
    如: private int a=0;
         public int A
     {
         get{return this.a;}     
         set
     {
          if(value >= 0 && value <= 100)  
              this.a=value;
         else
              throw new Exception("值的范围不合法。");
         }
    }
(3)属性没有存储数据的功能,数据都存在字段中,所以只有修改字段的数据才能更改数据,修改属性的值没用。  
属性是类提供给外部调用时用,的可以使用 对象.属性 设置或读取 一个值 get{reture xxx;}表示可读 set{xxx = value;}表示可写
字段就是类内部用的.存储数据 
private 字段; public 属性; 通过属性访问字段 
 
讲概念可能不好讲,下面来看一个例子吧!(最简单的)
 class Program {
        private int field1;  //这个field1就是字段       
    public int Field1     //这个Fileds1就是属性      
       {
        get{return field1;}
        set{field1=value;} 
      }
}//因为字段的访问修饰符为private外部不能访问它,但可以定义属性为public来访问。希望对你有帮助哦。
原创粉丝点击