为什么C#中要用属性来封装字段有什么好处?我可以把字段声明为私有的,然后用两个public方法来代替get,set块啊!!!!

解决方案 »

  1.   

    http://topic.csdn.net/u/20080826/17/ed93f809-8a14-4899-9f0d-8a8d283b889a.html
      

  2.   

    回一楼:
         
        我要是只读或只写,我可以写只返回值或只能修改不知道结果的方法不就好了!
        问题就在于get,set块所有功能都能由方法实现,为什么微软要用这两个来代替方法?只为标示于java的不同吗?
      

  3.   

    用两个public方法写出来也可以 不过这样不是太完美首先private string name;
    public string name
    {
    get{return name;}
    set{name=value;}
    }
    这样看起来美观~ 程序的可读性好,结构也清晰,它有保护数据的作用再次当我们需要它的时候可以直接调用就行了,而两个public需要调用两次,额外给程序增加了负担 写一个两个还好说写的多了不仅程序会混乱,恐怕过一些时间自己再拿来看都不知道写的是什么了,最重要的一点是:这是面向对像的思想!!
      

  4.   

    在C#的整体体系中,属性就是当成方法来看待的!你所使用属性只是一种编译器可以识别的特定模式的方法而已。
    这点在MDSN的很多文档中都有一些体现,你可以仔细观察一下看。
      

  5.   

    属性的本质就是对两个方法的定义。引入属性这个概念纯粹是为了提高代码的可读性。
    当然如果你一定要说直接写成方法可读性会更好,那也没办法,这是个见仁见智的问题。但别忘了.NET是谁设计的。
    是Anders Hejlsberg。这家伙在设计Delphi的时候就这么干了。这并不是.NET中才有的新玩艺儿。
      

  6.   

    还能很方便的控制读取和写入
    set写入权限,get读取权限
      

  7.   

    这个见仁见智,众说纷纭,看你自己怎堪了,
    不过属性的一个简单的使用就是在设置或获取的过程成,可以自动调用其他的方法。public PropertyTest
    {
    public string mP1;public string p1
    get {
    // do someths here before get_P1() method.
    return mP1;
    };
    set 
    {
    // do someths here before set_P1() method.
    mP1 = value;
    };
    }其实在内部是自动吧每个属性前加上 get_****  set_**** 的,实际上也是方法的实现而已。
      

  8.   


    private int id;public int Id
    {
        get { return id; }
        set { id = value; }
    }