以前我学过一段时间的Java,最近一段时间开始看C#,现在遇到2个问题想请教大家:
1、关于C#中的“属性”一说,我觉得好那什么噢。Java中说,类有属性和方法,即是指Class由变量和函数组成。而在C#中,除了变量和函数,怎么又出来一个专门叫做属性的“结构体”?这个属性到底有什么用呢?难道就是为了提高封装性?
2、关于索引器这个概念,我很混乱。因为从没这样用过。哪位老大能再给我解释一下么?谢谢了。

解决方案 »

  1.   

    1 属性是为了提高封装性,相对于自己写的get、set函数,代码量小了一点,而且使用的时候用户不知道自己是在调用函数。好像默认情况下,属性的代码是inline的2 索引器等于重载了[]操作符
      

  2.   

    索引器的实现和属性类似, CLR会将属性和索引器转换成方法的调用。
    那么实际的步骤就是:
    YourObj[1] -> 调用Indexer -> 调用Indexer对应的方法。
      

  3.   

    索引器就是一个快捷的提取特定数据的方式
    如class1类中有3个属性值name,value,code,
    class1 a = new class1()后,如果采用索引器的话就可以如a[2]就返回value,这个就像tables[0]返回第一个表对象一样,是可以自定义的
      

  4.   

    1 属性是为了提高封装性,相对于自己写的get、set函数,代码量小了一点,而且使用的时候用户不知道自己是在调用函数。2 索引实际上相当于operator重载!实现对对象的操作类似数组的功能!
      

  5.   

    索引器就是一个快捷的提取特定数据的方式
    如class1类中有3个属性值name,value,code,
    class1 a = new class1()后,如果采用索引器的话就可以如a[2]就返回value,这个就像tables[0]返回第一个表对象一样,是可以自定义的------------------------------------------------------------------------
    我理解了。写个测试程序试试看。
      

  6.   

    关于C#中的“属性”,就像Java中的Bean。只不过C#里进一步简化了这一过程。我们只要现实Get,Set方法,就能使这个对象向外提供属性。你可以比较一下Java中的Bean不也是getXXX(),setXXX(...)么?
      

  7.   

    textBox1.Text这个就是属性索引器就是可以向 数组 那样的访问自定义的变量
      

  8.   

    索引器就是一个快捷的提取特定数据的方式
    如class1类中有3个属性值name,value,code,
    class1 a = new class1()后,如果采用索引器的话就可以如a[2]就返回value,这个就像tables[0]返回第一个表对象一样,是可以自定义的
    -------------------------------------------------
    a[2]返回code吧
      

  9.   

    能在简单说一下,索引器是如何定义的吗?
    比如:
    class A
    {
      int i = 0;
      float a = 0.0;
      string heshi = "heshi";
    }
    然后,我—— A test = new A();
    我要达到诸位所说的直接使用test[1]的效果,该怎么做呢?简单的说,我该如何向一个类里面添加一个索引器呢?
    (另外小声问一句——各位老大,你们不是采用在VS的类视图里面添加索引器的办法来添加一个索引器的吧?虽然这个方法我在MSDN上也看到了,可是,我觉得对于我这样的初学者来说,还是少用IDE的功能,自己多写代码的好。呵呵。)