例如,如果我有
class Foo{
public float this[
int index
] { get ...; set ...; }
}
....
void Bar(float[] array){...}
为什么我不能说这个?
Bar(new Foo());
有没有办法将索引类型作为索引类型的数组传递给方法?
答案 0 :(得分:2)
这是一个很大的错误。索引器是不是数组。所以你不能这样作弊。数组有我知道的索引器,但它们的索引器有一个int
类型的参数。如果您创建另一个类型为Foo
的索引器,该怎么办?这没有任何意义。
要真正使Foo
像数组一样,实现一些接口。例如,IEnumerable<float>
和IEnumerator<float>
。
现在,在Bar
方法中,将参数类型更改为IEnumerable<float>
。现在,您可以传递Foo
对象或float
的数组。
有关如何实施IEnumerable
界面的信息,请参阅
https://msdn.microsoft.com/en-us/library/9eekhta0(v=vs.110).aspx
您可以在“示例”部分中看到它。