3
IDictionary<string, string> map = str.Split('|')
.ToDictionary(s => s.Split('@')[0], s => s.Split('@')[1]);
以上聲明起作用。但我想將其更改爲通用的IDictionary
與通用的Lambda
public class CSVMap <TKey, TValue>
{
public IDictionary<TKey, TValue> func (string str)
{
IDictionary<TKey, TValue> map = str.Split('|').ToDictionary (ConvertValue<TKey>(s => s.Split('@')[0]), ConvertValue<TValue>(s => s.Split('@')[1]));
}
public static T ConvertValue<T>(string value)
{
return (T)Convert.ChangeType(value, typeof(T));
}
和ConvertValue
投分割字符串的TKey
和TValue
類型。
但我得到了這些錯誤的ConvertValue
部分:
錯誤CS1660:無法轉換lambda表達式到類型「串」,因爲它不是一個委託類型
錯誤CS1660:無法轉換lambda表達式類型'字符串',因爲它不是委託類型
我不確定錯誤是什麼意思或如何解決這樣的問題。
正確的術語是「泛型」,而不是「模板」。模板是C++所具有的。 –
@JohnSaunders:.. *更改爲**模板** IDictionary * <=您錯過了一個.. –