浅谈C#中的属性
来源:互联网 发布:淘宝分享到微信怎么弄 编辑:程序博客网 时间:2024/05/23 14:12
C#中的属性
1)属性的定义方式与字段类似,但包含的内容较多,它可以在修改状态之前额外的执行一些操作。属性可以说有两个函数块儿,一个是获取属性的值(也就是get),一个设置属性的值(也就是set)。而字段一般首字母为小写,属性为大写;
class person //名为person的类{ private int age; //名为age,int型私有字段 public int Age //名为Age,public型共有属性,目的为 { //设置获取字段age,可根据需要设置不同访问级别 set { age = value; //设置属性值,注意这里一定为value, } //不需要问原因,牢记即可 get { return age; //采用return返回age } }}
2)这两个块儿也叫访问器,分别用set(设定)和get(获取)这两个关键字来定义;
3)可以在访问器上设置访问级别,例如可以设置为公有(public),私有(private)保护(protect),但是这里的访问级别针对的是此类以外的其他进行访问,例如若将基类中的访问器设置为private,那么派生类则不能使用基类中的访问器,当当然自身当然可以访问自身的访问器;
4)访问器可以根据需要设置为只读属性,只写属性,或者既读又写属性。所谓只读属性,是指只创建get而忽略set块儿,只写属性是指只创建set块儿,而忽略get块儿。既读又写属性是指既创建set块儿,又创建get块儿。
public int MyIntProp //只写属性,只有set { set { //property get code } }
public int MyIntProp //只读属性,只有get { get { //property get code } }
下面看一个类和属性的简单代码
static void Main(string[] args) { person p1 = new person(); //类的实例化 p1.Age = 30; //对访问器设置值,注意这里是Age而不是age Console.WriteLine("{0}", p1.Age); Console.ReadKey(); } class person { private int age; public int Age { set { this.age = value; //注意这里是age而不是Age } get { return this.age; //假如set和get中age都换为Age会是什么情形 } } }
将age换为Age
static void Main(string[] args) { person p1 = new person(); p1.Age = 30; Console.WriteLine("{0}", p1.Age); Console.ReadKey(); } class person { private int age; public int Age { set { this.Age = value; //此时已经将age换为Age } get { return this.Age; } } }想想会出现什么情况?
会出现无限循环,错误原因是“System.StackOverflowException”,就是一直在循环,计算机给憋死了,不干了。因为
this.Age = value;会不断的调用此属性,属性名字是Age,然后又给Age赋值,相当于自己给自己赋值,每次都是自己调自己,然后自己给自己赋值,没完没了,纠结死了。有兴趣的可以自己试试
- 浅谈C#中的属性
- 黑马程序员---浅谈c#中的属性
- 浅谈C#中的绘图!
- 浅谈C#中的枚举
- 浅谈C#中的数组
- 浅谈C#中的枚举
- 浅谈C#中的枚举
- 浅谈C#中的数组
- 浅谈C#中的枚举
- 浅谈C#中的枚举
- 浅谈C#中的结构
- 浅谈C#中的枚举
- 浅谈C#中的结构
- 浅谈C#中的数据类型
- 浅谈C#中的枚举
- 浅谈C#中的枚举
- 浅谈c#中的枚举
- 浅谈C#中的委托
- Oracle常用调优手段
- 当别人开始说你是疯子的时候,你离成功就不远了
- 补码负数多一个的问题
- NYOJ 42 一笔画问题
- Ubuntu 13.04 安装JDK7
- 浅谈C#中的属性
- uva442 栈
- Unity3D中常用js脚本的C#版
- [第一次训练]Arithmetic Progression
- td中div居中对齐
- Unity3D GUI.VerticalSlider和HorizontalSlider用 javaScript
- 中文编码相关,python处理gbk编码的xml文件方法
- Android 开发中调用google语音接口
- BigDecimal