使用属性,避免将数据成员直接暴露给外界

    在网上看到李建忠先生的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

posted @ 2005-06-28 11:10  shipfi  阅读(303)  评论(0编辑  收藏