黑马程序员--C#中的属性

 



---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------


今天看c#的课程时看到属性这一节,开始觉得应该是一个方法,就像先在一个类中声明一个私有变量接着实现一个get,set方法对其访问和修改,但仔细听课发现C#中的属性和我想的总的来说是将私有变量和方法相结合起来的一种方式。在微软的msdn中这样描述属性:属性是这样的成员:它们提供灵活的机制来读取、编写或计算私有字段的值。可以像使用公共数据成员一样使用属性,但实际上它们是称作“访问器”的特殊方法。这使得可以轻松访问数据,此外还有助于提高方法的安全性和灵活性。可见属性是一种特殊的方法。

  属性的简单定义形式为:

public 返回值 属性名
    {
        get { return ; }//返回变量值
        set {  变量名= value; }//设置变量值
    }

可见属性的书写形式和定义变量和定义方法都有一些微妙的不同。属性可以像变量一样的赋值和访问,但赋值时是执行set方法而输出时是访问get方法即return一个数值,这里可以看出有些独立。



上面一个程序可以简单地看出赋值时是执行set方法而输出时是访问get方法即return一个数值。

当然属性有一个重要的用处就是对于输入数据的控制比如年龄必须为正数,若是用以前的方法必须要写一个方法进行判断而如果定义了一个age的属性则可以在age属性的set方法中进行一些简单的逻辑处理


上例可以看出可以在set方法中控制简单的逻辑,可知当输入的数据为-1时不符合要求,即并未运行赋值,所以age的值还是初始值0;在这里要特别注意一个问题即不能将属性中set方法写成这样this.Age=value;这样程序在运行时会进入死循环,应为它会不断地递归调用public int Age{}这个属性方法(特殊的方法);


在.net3.0平台后我们可以更加简便的定义一个属性


可以看见这样写的话系统在编译的时候会为我们自动生成一个私有变量,但私有变量的名字是一串比较奇怪的字符串,需要看的读者可以将编译后的exe文件反编译看看,总之它会为我们生成一个私有文件名,并会将我们的set,get方法补全。*_*.

  当我们将属性中的set,get方法只写了其中一个的话,这样这个属性就会变成只读或只写属性了

  value的值是用来接收我们程序中输入的值。

  这些大概就是我所理解的基本的属性的一些用法吧。若想了解更多或不太明白的可以参考下msdn附下地址大家可以看看http://msdn.microsoft.com/zh-cn/library/x9fsa0sw(v=vs.90).aspx


---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值