例如過去了,如果我有爲什麼不能可索引類型可以作爲一個數組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'有相同的類型 - 這是不可能的。 –