2012-12-26 1 views
0

ConcurrentDictionary가 IDictionary 인터페이스를 구현했지만 인터페이스가 Add를 지원한다고해도 ConcurrentDictionary에는 해당 기능이 없습니다. 이게 어떻게 작동합니까? 나는 인터페이스가 구현 클래스에 기능을 부과한다고 생각했다 ...ConcurrentDictionary 및 IDictionary

+0

답변을 찾았습니다. Sean

답변

1

명시 적 인터페이스 구현을 사용하고있다. 다음은 그 예입니다. 당신이 할당하거나 ConcurrentDictionaryIDictionary에 캐스팅 경우

interface IFoo 
{ 
    void Foo(); 
} 

class FooImplementation : IFoo 
{ 
    void IFoo.Foo() 
    { 
    } 
} 

, 당신은 거기에 정의 된 모든 방법을 사용할 수 있습니다.

+0

생각났습니다. 클래스의 메타 데이터 분석을 보려면 ConcurrentDictionary의 정의로 갈 때 명시적인 메소드의 시그너처가 표시되지 않습니다. 명시 적 메소드는 어디에 정의되어 있습니까? 나의 이해는 암시 적이든 명시 적이든간에 인터페이스의 모든 메소드를 구현해야한다는 것이므로 CD 메타 데이터에 Add가 계속 표시되어야 함을 알 수있다. 아마도 메타 데이터가 불완전한 것입니까? 또한 이러한 명시 적 메서드는 매핑 할 것이라고 가정합니다 : IDictionary.Add ConcurrentDictionary.TryAdd; 이 올바른지? – Sean