我想用泛型編寫簡單的C#函數。例如數組解析器。通用函數錯誤
public static int parse_array <T> (string str, ref T[] array)
where T : IConvertible<T>
{
string[] vals=str.Split(new char[]{'','\t',',',';'}, StringSplitOptions.RemoveEmptyEntries);
if(vals==null || vals.Length==0)
return 0;
array = new T[vals.Length];
for(int i=0; i<vals.Length; i++)
{
array[i] = Convert.ChangeType (vals[i], T);
}
return vals.Length;
}
但我得到錯誤:非泛型類型'System.IConvertable'不能與類型參數一起使用。 有什麼問題?
僅供參考,C#沒有模板。它有「泛型」。它們與C++模板不一樣。 –
一定要修正你的'Convert.ChangeType'行,它應該讀取'array [i] = Convert.ChangeType(vals [i],typeof(T));'(注意'typeof') –
另一個錯誤:另一個錯誤:不能將類型'object'隱式轉換爲'T'。顯式轉換存在(是否缺少轉換?) – Newbee