모두 콘크리트 구현에 따라 다릅니다. 예를 들어
, 사전 < TKEY, TValue > 구현 모두 일반 IDictionary < TKEY, TValue >과 제네릭이 아닌 IDictionary - 그래서 당신이 사전 < TKEY이있는 경우, TValue > 당신이로 중 하나를 문제없이 사용할 수 있습니다 : 그것이 사실이 아니기 때문에
Dictionary<int, string> lookup = new Dictionary<int,string>();
IDictionary<int,string> typed = lookup;
IDictionary untyped = lookup;
그러나이 반드시 모든 IDictionary < TKEY를 들어, TValue > imlpementations을 적용하지 않는 IDictionary < TKEY, TValue > : IDictionary. 일반적인 코드를 숙지하고 있다면 현재 사전을 테스트 할 수 있습니다 :
IDictionary<int,string> typed = ...
IDictionary untyped = typed as IDictionary;
if(untyped == null) {/* create by enumeration */}