2014-04-13 3 views
-1

기본적으로 IEnumerable 인터페이스를 사용하는 클래스를 만들고 Visual Studio에서 기본 구현을 제공하도록 허용하는 경우 두 가지를 만듭니다. 인터페이스의 명시 적 구현 및 인터페이스 메소드의 일반적인 '대체'?Visual Studio에서 IEnumerable 인터페이스에 대한 두 가지 구현을 제공하는 이유

무슨 일이 벌어지고 있니? 명시 적 인터페이스 구현을 위해 내가 만난 유일한 유스 케이스는 동일한 메소드 서명을 가진 두 개의 인터페이스를 사용하는 것입니다. 그러나 여기서는 그렇지 않습니다.

+1

'IEnumerable'과'IEnumerable '은 별개의 인터페이스입니다. 우리는 .NET 1.x를 완전히 없앨 수 없습니다. –

답변

2

두 개의 인터페이스와 두 가지 방법이 있기 때문입니다. IEnumerable<T>IEnumerable (비 제네릭 버전)을 구현하며 각각은 GetEnumerator이 구현되어야합니다. 일반적으로 IEnumerableGetEnumerator를 호출 할 때 클래스의 대부분의 사용자 (그 명시 적으로 IEnumerable로 입력하지 않도록 선호 IEnumerable<T> 구현을 얻을 것이다, 명시 적으로 구현된다.

나는이 디자인을 선택한 것으로 의심 (IEnumerable<T>IEnumerable)가 호환성을 방지하고 제네릭을 인식하지 못하는 오래된 코드의 문제점들.

관련 문제