使用属性,避免将数据成员直接暴露给外界
2005-06-28 11:10
387 查看
在网上看到李建忠先生的Blog, 看到了这篇文章:
《Effective C#》 翻译笔记(1)使用属性,避免将数据成员直接暴露给外界
它讲了一条设计原则:Item 1 - Always Use Properties Instead of Accessible Data Members.
是对于这个问题做解答的:
为什么不直接放一个public字段?
class Card
{
public string Name;
}
而非要做一个private字段+public属性?
class Card
{
private string name;
public string Name
{
get { return this.name;}
set { this.name=value;}
}
}
讲了几条使用属性的理由:
1。可以对赋值做校验、或者额外的处理。
2。可以做线程同步。
3。可以使用虚属性、或者抽象属性。
4。可以将属性置于interface中
5。可以提供get-only或者set-only版本;甚至可以给读、写以不同的访问权限(C# 2.0支持)
关于第一条,明白!第五条,也用过,知道点。第2,3,4都没用过,Blog上面没有细讲,所以概念模模糊糊,有几个疑问:
1.线程同步怎么用?
2.虚属性,抽象属性有什么特别的用处吗?
更多的内容可以见:http://www.microsoft.com/china/msdn/library/langtool/vcsharp/EffectiveCsharp.mspx
《Effective C#》 翻译笔记(1)使用属性,避免将数据成员直接暴露给外界
它讲了一条设计原则:Item 1 - Always Use Properties Instead of Accessible Data Members.
是对于这个问题做解答的:
为什么不直接放一个public字段?
class Card
{
public string Name;
}
而非要做一个private字段+public属性?
class Card
{
private string name;
public string Name
{
get { return this.name;}
set { this.name=value;}
}
}
讲了几条使用属性的理由:
1。可以对赋值做校验、或者额外的处理。
2。可以做线程同步。
3。可以使用虚属性、或者抽象属性。
4。可以将属性置于interface中
5。可以提供get-only或者set-only版本;甚至可以给读、写以不同的访问权限(C# 2.0支持)
关于第一条,明白!第五条,也用过,知道点。第2,3,4都没用过,Blog上面没有细讲,所以概念模模糊糊,有几个疑问:
1.线程同步怎么用?
2.虚属性,抽象属性有什么特别的用处吗?
更多的内容可以见:http://www.microsoft.com/china/msdn/library/langtool/vcsharp/EffectiveCsharp.mspx
相关文章推荐
- 使用属性——避免将数据成员直接暴露给外界
- 改善 C# 的语言习惯(一) - 使用属性而不是可访问的数据成员(整理中)
- 条款1:使用属性代替可访问的数据成员
- Effective C# 原则1:尽可能的使用属性(property),而不是数据成员(field)
- 条款1:使用属性代替可访问的数据成员(转)
- [转]Effective C# 原则1:尽可能的使用属性(property),而不是数据成员(field)
- Linq使用Distinct删除重复数据时如何指定所要依据的成员属性zz
- 【C#高效编程50例】条目1:使用属性而不是可访问的数据成员
- Item 1: 尽可能的使用属性代替可访问的数据成员(Always Use Properties Instead of Accessible Data Members)
- 提高C#编程水平的50个要点 1.总是用属性 (Property) 来代替可访问的数据成员 2.在 readonly 和 const 之间,优先使用 readonly 3.在 as 和 强制类型转换之
- 地磅称量系统之(37~39) 直接向数据库的数据表WtBill添加测试数据以及绑定用户控件和使用编码的方式控制dataGridView控件的每列属性和添加数据数据库的表中不存在的字段(非绑定列)
- Effective C# 原则1:尽可能的使用属性(property),而不是数据成员(field)。
- EffectiveC#1--尽可能的使用属性(property),而不是数据成员(field)
- Effective C# 原则1:尽可能的使用属性(property),而不是数据成员(field)。
- 按钮的基本使用(不能直接访问对象的 结构体属性 的成员变量\)
- Effective C# 原则1:尽可能的使用属性(property),而不是数据成员(field)
- Effective C#阅读笔记-1.使用属性(Properties)代替数据成员(Data Member)
- effective C++笔记之条款20、21:避免public接口出现数据成员、尽可能使用const
- 《Effective C#》读书笔记——条目1:使用属性而不是可访问的数据成员<C#语言习惯>
- Effective C# 原则1:尽可能的使用属性(property),而不是数据成员(field)。