如何制作锯齿状索引器

本文关键字:索引 锯齿状 何制作 | 更新日期: 2023-09-27 18:35:49

>我在某处看到锯齿状索引器,想知道如何使它们工作。

我知道我可以做到以下几点:

class foo
{
    public string this[int i1]
    {
        get{ return GetString(i1); }
    }
    public string this[int i1, int i2]
    {
        get{ return GetString(i1) + GetString(i2); }
    }
}

因此:

string s1 = foo[5];
string s2 = foo[12,8];

问题是,如何定义索引器来执行...

string s2 = foo[12][8];

如果可能(否则不清楚),我也希望二传手定义。

foo[12][8] = "qwerty";

如何制作锯齿状索引器

Derrick Shepard的回答似乎是正确的,但是我有一些注意事项要告诉你:

使用您当前的方法:

public string this[int i1]
public string this[int i1, int i2]

foo[12][8]会等效地解析为(foo[12])[8];你会得到string foo[12],然后得到它的第9个字符。

如果愿意更改第一个方法(具有单个参数的索引器),则可以考虑返回一个对象,该对象将反过来提供另一个索引器。

我希望这就是你要找的:

class foo
{
    private string[][] collection = new string[2][];
    public string[] this[int index]
    {
        get
        { 
            return collection[index]; 
        }
        set
        {
            collection[index] = value;
        }
    }
}

然后:

string s1 = foo[1][0];
foo[1][0] = s1;

当我创立这个时我很高兴,但就我个人而言,这很令人困惑,因为getter和setter很奇怪。看起来集合是一维数组而不是锯齿状。