나는 특정 키를 가지고있는 사전을 가지고있는 클래스를 가지고있다. 그러나 가치는 일반적이어야합니다. 같은일반 사전을 만드는 방법은 무엇입니까?
뭔가 :
private Dictionary<String,TValue> _Dictionary;
는 그러나 TValue 발견되지 않는 (obvesly)하지만 다른 무엇 난에 넣어해야합니까? 나는 IList에 대한 해결책을 찾았지만, 단지 하나를 추가하고 싶습니다. 일반 객체.
나는 특정 키를 가지고있는 사전을 가지고있는 클래스를 가지고있다. 그러나 가치는 일반적이어야합니다. 같은일반 사전을 만드는 방법은 무엇입니까?
뭔가 :
private Dictionary<String,TValue> _Dictionary;
는 그러나 TValue 발견되지 않는 (obvesly)하지만 다른 무엇 난에 넣어해야합니까? 나는 IList에 대한 해결책을 찾았지만, 단지 하나를 추가하고 싶습니다. 일반 객체.
그래서 일반적인 사전을 원하십니까? 미리 정의 된 클래스를 사용하십시오.
public Dictionary<int, string> _dictionary = new Dictionary<int, string>();
그러면 정수형 키와 문자열 값이있는 사전을 얻을 수 있습니다. 변수 중 하나만 사용하여 사전이 필요한 경우 사전을 상속하여 자신의 유형을 만들 수 있습니다.
public class KeyTypeConstantDictionary<T> : Dictionary<int, T>
{
}
그럼 그렇게처럼 사용 :
KeyTypeConstantDictionary<string> x = new KeyTypeConstantDictonary<string>();
// Equivalent to Dictionary<int, string>()
KeyTypeConstantDictionary<SomeObject> x = new KeyTypeConstantDictonary<SomeObject>();
// Equivalent to Dictionary<int, SomeObject>()
가 잘하면 내가 제대로 질문을 이해했다.
제네릭 유형 내에서 사용하는 경우 Tejs answer이 적합합니다.
private Dictionary<string, object> _dictionary;
이 뜻 : 당신은 그냥 키의 고정 된 형식의 사전을 만들려고 노력하고 있지만 이는 어떤 값을 저장할 수있는 경우
그러나, 하나의 옵션은 당신의 가치를 System.Object
을 사용하는 것입니다 값에 개체를 할당 할 수 있습니다. 그러나 이것은 유형 안전성을 잃어 버리고 객체의 박스를 해제하고 올바르게 변환해야 할 필요가 있으므로 잠재적으로 위험합니다.
게다가 값에 대한 객체 유형을 사용하면 System.Collections.Hashtable보다 훨씬 효율적입니다! = D – Tejs
@Tejs : 목표가 무엇인지에 따라 달라집니다 - 가치에 무엇을 저장할 계획입니까? 그건 우리가 최선의 선택이 실제로 무엇인지 결정하는 데 도움이 될 것입니다 ... –
어디서 사용 되나요? –