【C#高效编程50例】条目1:使用属性而不是可访问的数据成员
来源:互联网 发布:win7网吧系统优化 编辑:程序博客网 时间:2024/05/13 02:32
书名:《C#高效编程 改进C#代码的50个行之有效的方法》
条目1 使用属性而不是可访问的数据成员
1 属性格式
private string _scustomerName = string.Empty; public string CustomerName { get { return _scustomerName; } set { _scustomerName = value; } }
2 可以为Set get 指定不同的访问权限, 如 为get指定私有的
private string _scustomerName = string.Empty; public string CustomerName { private get { return _scustomerName; } set { _scustomerName = value; } }
3 属性比数据成员易于维护、修改,比如用户名不能为空,则在属性里直接加现在就可以
private string _scustomerName = string.Empty; public string CustomerName { private get { return _scustomerName; } set { if (string.IsNullOrEmpty(value)) { throw new Exception("Customer can not be blank.", "Name"); } _scustomerName = value; } }
4 支持多线程,可以在属性里是实现同步
private object obj = new object(); private string _scustomerName = string.Empty; public string CustomerName { private get { lock (obj) return _scustomerName; } set { if (string.IsNullOrEmpty(value)) { throw new Exception("Customer can not be blank.", "Name"); } lock (obj) _scustomerName = value; } }
5 像方法一样,可以为Virtual的
public virtual string CustomerName { get; set; }6 也可以声明为抽象的 abstract
public interface INameValuePair<T> { string Name { get; } T Value { get; set; } }
7 get 和 set 作为两个方法,独立的编译
8 支持参数的属性:索引器
public int this[int index] { get { return theValue[index]; } set { theValue[index] = value; } }
9 属性和数据成员在代码层面上是兼容的,但是在二进制层面上不一样。
属性和数据成员的访问,也会生成不同的MSIL,微软中间语言指定。
访问属性和访问数据成员的性能差距很小。
属性的访问器里不应该进行长时间的计算,因为用户期待访问属性就像访问数据成员一样。
0 0
- 【C#高效编程50例】条目1:使用属性而不是可访问的数据成员
- 【C#高效编程50例】条目4: 使用Conditional特性而不是#if条件编译
- 条款1:使用属性代替可访问的数据成员
- 条款1:使用属性代替可访问的数据成员
- 改善C#程序的50种方法 条款1:使用属性代替可访问的数据成员
- 【C#高效编程50例】条目3:使用is 或 as 操作符而不是强制类型转换
- Effective C# 原则1:尽可能的使用属性(property),而不是数据成员(field)。
- Effective C# 原则1:尽可能的使用属性(property),而不是数据成员(field)
- Effective C# 原则1:尽可能的使用属性(property),而不是数据成员(field)
- 优化程序--C#使用属性代替可访问的数据成员
- 【C#高效编程50例】条目2:用运行时常量(readonly)而不是编译期常量(const)
- 提高C#编程水平的50个要点 之一“总是用属性 (Property) 来代替可访问的数据成员(field)”
- 提高C#编程水平的50个要点 1.总是用属性 (Property) 来代替可访问的数据成员 2.在 readonly 和 const 之间,优先使用 readonly 3.在 as 和 强制类型转换之
- 原则1:始终能的使用属性(property),而不是可直接访问的Data Member
- 1.总是用属性 (Property) 来代替可访问的数据成员(field)
- 浅谈C#类成员的访问属性
- C# 编程指南——类和结构及其成员的可访问性
- C#成员可访问性
- java list转树形
- JSON 转成 C# 动态类
- 复制文件
- CentOS下批量校验文件md5值
- mybatis增、删、改、查
- 【C#高效编程50例】条目1:使用属性而不是可访问的数据成员
- 验证 FFmpeg+SDL 的配置是否正确
- C++进阶学习——单例模式的实现
- vi/vim个人配置文件
- 寒風的Cocos之旅C++篇之进度条的使用
- libraw使用
- 95 php echo请求头跳转问题
- Protobuf在Java中的使用
- Python中列表、元组、字典的异同