• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

green hand

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

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 的代码, 将编译不通过。 可以简单去注释掉即可。
 
也就是在属性中,我们可以自定义对变量的读写进行控制,在读写的内部尽量将可能出现的异常给处理掉,在读写的时候就相对安全。

posted on 2015-03-05 14:53  green hand  阅读(387)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3