例如过去了,如果我有为什么不能可索引类型可以作为一个数组C#
class Foo{
public float this[
int index
] { get ...; set ...; }
}
....
void Bar(float[] array){...}
我为什么不能说?
Bar(new Foo());
是否有某种方式传递一个可转位类型的方法作为索引类型的数组?
例如过去了,如果我有为什么不能可索引类型可以作为一个数组C#
class Foo{
public float this[
int index
] { get ...; set ...; }
}
....
void Bar(float[] array){...}
我为什么不能说?
Bar(new Foo());
是否有某种方式传递一个可转位类型的方法作为索引类型的数组?
这是一个巨大的错误。索引器是而不是阵列。所以你不能这样做。数组有索引器我知道,但他们的索引器有一个int
类型的参数。如果您制作另一个具有Foo
类型的索引器,该怎么办?这只是没有任何意义。
要真正使Foo
类似数组,实现一些接口。例如,IEnumerable<float>
和IEnumerator<float>
。
现在在您的Bar
方法中,将参数的类型更改为IEnumerable<float>
。现在,您可以传递Foo
对象或float
s的数组。
有关如何实现IEnumerable
界面的信息,请参阅
https://msdn.microsoft.com/en-us/library/9eekhta0(v=vs.110).aspx
你可以看到它在“示例”部分。
为了使它像阵列一样,他需要实现IList
不,你想要做的是鸭子打字,和c#不支持它。 – MarcinJuraszek
它有一个索引器,但它并不是一个数组。 – dman2306
'float []'永远不会和'Foo'有相同的类型 - 这是不可能的。 –