Tôi có thể tạo một từ điển, nơi mà loại khóa là một loại chung?Tôi có thể sử dụng chung chung làm chìa khóa không?
ví dụ:
void addKey<T>(object value)
{
dic.add(T, value);
}
Tôi có thể tạo một từ điển, nơi mà loại khóa là một loại chung?Tôi có thể sử dụng chung chung làm chìa khóa không?
ví dụ:
void addKey<T>(object value)
{
dic.add(T, value);
}
Còn về?
void AddKey<T>(T value)
{
dic.Add(typeof(T), value);
}
Cách sử dụng:
// the type of value is automatically detected based on usage
AddKey("sampleString");
Bạn có thể vượt qua loại exlicity tất nhiên:
AddKey<BaseClass>(derriveredInstance);
Sau đó, từ điển là loại Dictionary<Type, object>
Hạn chế: Bạn không thể vượt qua insta nce của khác (không căn cứ hoặc không giống nhau) lớp như chính:
AddKey<int>("some string"); // compile time error
Nếu bạn muốn đạt được một cái gì đó như thế này, bạn nên có một cái nhìn tại câu trả lời khác và vượt qua Type
hoặc vượt qua object
as type có giá trị.
Chỉ cần để tổng hợp các ý kiến:
Dictionary<Type, object> dic = new Dictionary<Type, object>();
void AddKey(Type key,object value)
{
dic.Add(key, value);
}
và bạn có thể sử dụng nó như thế này:
AddKey(typeof(string), new Object());
'typeof (T) 'sẽ nhận được một' Type' đại diện cho 'T'. –
Cảm ơn ta.speot. Cùng một dòng tương tự, tôi có thể vượt qua lớp như một tham số không? Thay vì truyền một thể hiện của lớp như một tham số? – Ginger
@Ginger bạn có thể truyền một lớp của lớp 'Loại', bạn có thể sử dụng phương thức' typeof' –