【问题标题】:How do you use indexers with array of objects?您如何将索引器与对象数组一起使用?
【发布时间】:2011-02-19 06:37:08
【问题描述】:

如果我们使用对象数组,我们如何使用索引器???

对于单个对象:

static void Main(string[] args)
{
    MYInd mi = new MYInd();
    mi[1] = 10;
    Console.WriteLine(mi[1]);
    mi[2, 10] = 100;
    Console.WriteLine(mi[2]);

    Console.WriteLine(mi[3, 10]);

对象数组应该怎么做?

MYInd[] mir = new MYInd[3];

我们如何使用每个对象和索引器?

【问题讨论】:

    标签: c# .net arrays indexer


    【解决方案1】:

    如果你想迭代,你有几个选择

    foreach(MYInd mi in mir)
        Console.WriteLine(mi[3, 10]);
    

    如果你想从数组中挑选出一个特定的MYInd,你可以一步完成

    Console.WriteLine(mir[1][3, 10]); // [1] picks out one object from the array
    

    或分两步

    MYInd mi = mir[1]; // pick out one object from the array
    Console.WriteLine(mi[3, 10]);
    

    【讨论】:

    • 感谢您的回复。但我试过这个,它给了我一个例外。异常:对象引用未设置为对象的实例
    • @Thomas,很可能您初始化了数组(使用您在问题中写的 new 关键字)而不是对象本身。创建数组后尝试for(int i = 0 ; i < mir.Length ; i++) mir[i] = new MYInd();
    【解决方案2】:
    mir[0][1, 2]
    

    但你可以把它想象成:

    (mir[0])[1, 2]
    

    括号不是必需的,因为 [ 运算符是从左到右解析的(如 (1 + 2) + 3 == 1 + 2 + 3。我认为它称为左关联性,但我不确定:-) )

    请记住,您必须同时初始化数组和元素:

    var mir = new MyInd[5];
    for (int i = 0; i < mir.Length; i++) 
    {
        mir[i] = new MyInd();
    }
    

    【讨论】:

    • 感谢您的回复。但我试过这个,它给了我一个例外。异常:对象引用未设置为对象的实例。
    • 您必须初始化数组和数组元素。 var mir = new MyInd[5]; for (int i = 0; i
    猜你喜欢
    • 1970-01-01
    • 2020-09-24
    • 2016-04-17
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 2016-04-11
    相关资源
    最近更新 更多