如何制作锯齿状索引器
本文关键字:索引 锯齿状 何制作 | 更新日期: 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很奇怪。看起来集合是一维数组而不是锯齿状。