黑马程序员 C#基础_属性与字段的区别

本文详细介绍了C#中属性与字段的概念及其区别。解释了字段是与对象或类关联的变量,而属性则是字段的扩展,允许在保证封装性的同时提供了访问私有成员的方式。还介绍了属性的声明方式及其实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------- Windows Phone 7手机开发.Net培训、期待与您交流! -------

C#中属性与字段的区别

 

先上代码:

class A
{
      int number;

       public int Nunber       
      {
            get{....}
            set{....}
      }  
}


如上:number是字段      Number是属性

字段:与对象或类相关联的变量。通常来讲修饰符是public的成员变量称为字段,而private更适合说是局部变量。

属性:字段的自然扩展,使得在保证封装性的基础上实现了访问私有成员的便捷性

 

属性与字段相同点:

两者都是具有关联类型的命名成员,而且访问字段和属性的语法是相同的。

 

属性与字段的不同点:

属性有访问器(accessor),这些访问器指定在它们的值被读取或写入时需执行的语句。

 

属性与字段的声明:

属性的声明类似于字段,不同之处在于属性的声明以定界符{}之间的get访问器和/或set访问器结束,而不是分号。

同时包含get访问器和set访问器的属性称为读写属性(read-write   property)。

只具有get访问器的属性称为只读属性(read-only property)。

只具有set访问器的属性称为只写属性(write-only property)//没多大意义。

字段一般定义为私有的,为了防止外界随意访问,属性就是可控的字段访问,让用户通过属性访问字段,我们可以在属性里做很多事,比如判断用户权限、验证用户提供的值的合法性等等等
   
   

get访问器相当于一个具有属性类型返回值的无参数方法。除了作为赋值的目标外,当在表达式中引用属性时,会调用该属性的get访问器以计算该属性的值。
  
    set访问器相当于一个具有单个名为value的参数和无返回类型的方法。当一个属性作为赋值的目标,或者作为++或--运算符的操作数被引用时,就会调用set访问器,所传递的自变量将提供新值。

 

代码实现属性与字段的区别:

public   class   Class1   
{   
  private   int   m_member;   
  public   Class1()   
  {   
  }   
  public   int   member   
  {   
   get   
    {   
     return   m_member;   
    }   
   set   
    {   
     m_member=value;   
    }   
  }   
}   
    
和   
   
public   class   Class1   
{   
  public   int   m_member;   
  public   Class1()   
  {   
  }   
}   

//有什么区别呢?   
//后者显得简洁得多,为什么却看到多数人都在使用前者?

//数据成员最好不要设置成public的,即数据隐藏。


//属性可以设置是否读写,可以在get和set中加入一些控制,适合和外部交互使用,字段是在程序内部使用,是隐藏的 


例如:
private int a=0;
public int A
{
     get{return this.a;}
     set{this.a=value;}
}
//这样的话,如果我用你的类只能看到属性A,而不是内部字段a,这也是使用属性的好处 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值