Czy mogę utworzyć słownik, w którym typ klucza ma charakter ogólny?Czy mogę użyć klucza ogólnego jako klucza?
np.
void addKey<T>(object value)
{
dic.add(T, value);
}
Czy mogę utworzyć słownik, w którym typ klucza ma charakter ogólny?Czy mogę użyć klucza ogólnego jako klucza?
np.
void addKey<T>(object value)
{
dic.add(T, value);
}
Co z tym?
void AddKey<T>(T value)
{
dic.Add(typeof(T), value);
}
Zastosowanie:
// the type of value is automatically detected based on usage
AddKey("sampleString");
Ty mógł przejść typu exlicity przedmiotu:
AddKey<BaseClass>(derriveredInstance);
Następnie słownika jest typu Dictionary<Type, object>
Wadą: Nie możesz przekazać insta nce innych (nie podstawy, czy nie tak samo) klasy jako klucz:
AddKey<int>("some string"); // compile time error
Jeśli chcesz osiągnąć coś takiego, należy zapoznać się z innych odpowiedzi i przekazać Type
lub przekazać object
jako typ wartości.
Wystarczy podsumować komentarze:
Dictionary<Type, object> dic = new Dictionary<Type, object>();
void AddKey(Type key,object value)
{
dic.Add(key, value);
}
i można go używać tak:
AddKey(typeof(string), new Object());
'typeof (T)' 'dostanie Type' reprezentującą' T'. –
Dzięki ta.speot. Wzdłuż podobnej linii, czy mógłbym przekazać klasę jako parametr? Zamiast przekazywania instancji klasy jako parametru? – Ginger
@Ginger można przekazać instace klasy 'Type', którą można uzyskać za pomocą metody' typeof' –