Multiple IEnumerable implementations paradox

前端 未结 2 1050
梦谈多话
梦谈多话 2021-01-18 23:56
  1. I have a generic class A<T>, that implements IEnumerable<T[]>.
  2. I want to have a convenience wrapper B that inherits from A<c

2条回答
  •  无人及你
    2021-01-19 00:30

    The difference is the following:

    foreach actually looks for a public method called GetEnumerator. It doesn't really care for IEnumerable. Your class B only has one public method named GetEnumerator: The one defined in B which hides the one defined in A.

    ToArray on the other hand is an extension method on IEnumerable. As your class is both IEnumerable and IEnumerable the call is ambiguous between the two generic arguments string and char[].

提交回复
热议问题