C#自定义属性(跟成员变量的区别)

属性声明

public int age { get; set; }

从功能上等价于

private int m_age;

public int age {
get { return m_age; }
set { m_age = value; }
}

在这里,属性和成员变量的区别不大。

等价于 public int age;

也就是一开始的时候, 无视 有限性、读写权限的情况下。
先偷懒, 写成
public int age { get; set; }

项目写到某个阶段了, 要求 age 数值必须有效了。 不能年龄小于 0 的.
那么切换成

private int m_age;

public int age {

get { return m_age; }

set {
if( value < 0 ) {
// 抛个异常什么的.........
}
m_age = value;
}
}

或者又到某个阶段了, 说 age > 30 不结婚违法什么的。

那么切换成

private int m_age;

public int age {

get { return m_age; }

set {
if( value < 0 ) {
// 抛个异常什么的.........
}
m_age = value;

if( value > 30 && marryed == false) {
// 触发某事件......
}
}
}

或者又到某个阶段了, 说 age 不能外部设置, 外部只能设置 生日。 age 是只读的, 通过生日计算的。

那么切换成

public int age {
get { return 今年 - 生日的年; }
}

这样修改以后, 原先所有的 直接 设置 age 的代码, 将编译不通过。 可以简单去注释掉即可。

也就是在属性中,我们可以自定义对变量的读写进行控制,在读写的内部尽量将可能出现的异常给处理掉,在读写的时候就相对安全。

时间: 2024-08-08 04:04:54

C#自定义属性(跟成员变量的区别)的相关文章

静态变量和成员变量的区别 &amp;&amp; 成员变量和局部变量的区别

============================================================================= 1)静态变量和成员变量的区别: (1):所属不同: 静态变量:属于类,也称为类变量. 成员变量:属于对象,也称为对象变量或实例变量. (2):在内存中的位置不同: 静态变量:存储于方法区的静态区. 成员变量:存储于堆内存. (3):生命周期不同: 静态变量:静态变量是随着类的加载而加载,随着类的消失而消失. 成员变量:成员变量是随着对象的创建

《java中局部变量和成员变量的区别》

1 class Car 2 { 3 String color; 4 int number; 5 6 void run() 7 { 8 System.out.println(color+"::"+number); 9 } 10 } 11 12 class CarDemo 13 { 14 public static void main(String[] agrs) 15 { 16 Car c = new Car();//c是类类型的变量. 17 //c.color = "blue

【转】iOS中属性与成员变量的区别

转载自http://www.cnblogs.com/crazypebble/p/3439261.html 一.类Class中的属性property 在ios第一版中,我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: @interface MyViewController :UIViewController { UIButton *myButton; } @property (nonatomic, retain) UIBut

属性 与成员变量的 区别与联系 及属性修饰词理解

成员变量和属性的区别与联系在于: 成员变量是一个“内”概念,反映的是类的结构构成.属性是一个“外”概念,反映的是类的逻辑意义. 成员变量没有读写权限控制,而属性可以指定为只读或只写,或可读可写. 成员变量不对读出作任何后处理,不对写入作任何预处理,而属性则可以. public成员变量可以视为一个可读可写.没有任何预处理或后处理的属性. 而private成员变量由于外部不可见,与属性“外”的特性不相符,所以不能视为属性. 虽然大多数情况下,属性会由某个或某些成员变量来表示,但属性与成员变量没有必然

JAVA_SE基础——26.[深入解析]局部变量与成员变量的区别

黑马程序员入学blog ... 如果这章节很难懂的话应该返回去先看  JAVA_SE基础--10.变量的作用域 定义的位置上区别: 1. 成员变量是定义在方法之外,类之内的. 2. 局部变量是定义在方法之内. 作用上的区别: 1. 成员变量的作用是用于描述一类事物的公共 属性的. 2. 局部变量的作用就是提供一个变量给方法内部使用而已. 生命周期区别: 1. 随着对象 的创建而存在,随着对象的消失而消失. 2. 局部变量在调用了对应的方法时执行到了创建该变量的语句时存在,局部变量一旦出了自己的作

iOS中属性与成员变量的区别

一.类Class中的属性property 在ios第一版中,我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: @interface MyViewController :UIViewController {     UIButton *myButton; } @property (nonatomic, retain) UIButton *myButton;@end 最近,苹果将默认编译器从GCC转换为LLVM(low lev

JAVA基础之局部变量与全局变量以及成员变量的区别

局部变量 定义:在方法内定义的变量称为"局部变量"或"临时变量",方法结束后局部变量占用的内存将被释放. 全局变量 定义:全局变量,又称"外部变量",它不是属于哪个方法,作用域从定义的地址开始到源文件结束. 注意事项: 当局部变量与全局变量重名时,起作用的是局部变量. 成员变量 定义:在类体的变量部分中定义的变量,也称为字段. 区别: java中没有全局变量的定义,这是C中的例: class Demo{ int x;// 非静态成员变量,又称为属

局部变量和全局变量以及成员变量的区别

import <Foundation/Foundation.h> @interface Person : NSObject { // 写在类声明的大括号中的变量, 我们称之为 成员变量(属性, 实例变量) // 成员变量只能通过对象来访问 // 注意: 成员变量不能离开类, 离开类之后就不是成员变量 \ 成员变量不能在定义的同时进行初始化 // 存储: 堆(当前对象对应的堆的存储空间中) // 存储在堆中的数据, 不会被自动释放, 只能程序员手动释放 int age; } @end @impl

Objective-C 基本语法:实例变量与成员变量的区别.l........实例方法和类方法区别

http://leopard168.blog.163.com/blog/static/16847184420138153296930/ http://blog.csdn.net/thdxs/article/details/10988343 1.类方法是属于整个类,而不属于某个对象.2.类方法只能访问类成员变量,不能访问实例变量,而实例方法可以访问类成员变量和实例变量.3.类方法的调用可以通过类名.类方法和对象.类方法,而实例方法只能通过对象.实例方法访问.4.类方法只能访问类方法,而实例方法可以