using System;namespace ConsoleApplication1
{
public class Btest
{
public int[] num=new int[]{10,20,30,40,50};
public int this[int i]
{
get
{
Console.WriteLine("调用get");
return num[i];
}
set
{
if(value>100)
num[i]=value;
Console.WriteLine("调用set");
}
}
public static void Main()
{
Btest obj=new Btest();
Console.WriteLine(obj.num[4]);
obj.num[4]=90;
Console.WriteLine(obj.num[4]);
obj.num[4]=200;
Console.WriteLine(obj.num[4]);
Console.ReadLine();
}
}
}
为什么?

解决方案 »

  1.   

    调用索引器是obj[4]这样子的。obj.num[4]只是调用了obj的公共成员num的第5个元素,这和索引器没关系。另外,num应该是private的,所以,才用索引器去访问.
      

  2.   

    public int this[int i]
    这个是索引器。public int[] num=new int[]{10,20,30,40,50};
    这个是成员数组 public class Btest
    {
    public int[] num=new int[]{10,20,30,40,50};
    public static void Main()
    {
    Btest obj=new Btest();
    Console.WriteLine(obj.num[4]);
    obj.num[4]=90;
    Console.WriteLine(obj.num[4]);
    obj.num[4]=200;
    Console.WriteLine(obj.num[4]);
    Console.ReadLine();
    }
    }你试试看,没有索引器照样能运行Console.WriteLine(obj.num[4]);
    你觉得调用的是成员数组还是是索引器?
      

  3.   

    Console.WriteLine(obj[4]);
    **********************************
    *本人主要使用VB+MS SQL,C#略知一二*
    *                                *
    *如有相关问题需要帮助            *
    *                                *
    *可发短消息告知链接              *
    **********************************