0
我寫這個方法投用逗號分隔的字符串轉換成它的類型的列表:通用演員CSV列出
public List<T> GetListFromString<T>(string commaSplited)
{
return commaSplited.Split(',').Cast<T>().ToList();
}
但它拋出一個異常說「指定的強制轉換是無效的。」
我用長輸入測試過它。
我寫這個方法投用逗號分隔的字符串轉換成它的類型的列表:通用演員CSV列出
public List<T> GetListFromString<T>(string commaSplited)
{
return commaSplited.Split(',').Cast<T>().ToList();
}
但它拋出一個異常說「指定的強制轉換是無效的。」
我用長輸入測試過它。
你的代碼當然有效,如果T是字符串(我測試了它)。
如果牛逼是別的,說INT,你會得到這個例外。
這個作品
List<string> result = GetListFromString<string>("abc, 123, hij");
失敗
List<int> resultInt = GetListFromString<int>("23, 123, 2");
那是因爲人們不能投或轉換字符串到INT,例如下面會失敗過:
int three = (int)"3";
的修復
public List<T> GetListFromString<T>(string commaSplited)
{
return (from e in commaSplited.Split(',')
select (T)Convert.ChangeType(e, typeof(T))).ToList();
}
然而所有給定的字符串必須是可轉換到牛逼,例如下面仍然失敗:
List<int> resultIntFail = GetListFromString<int>("23, abc, 2");
因爲 「ABC」 不能轉換爲類型INT。
此外,牛逼必須有某種類型的System.Convert()知道如何從一個字符串轉換。
你的目標是什麼?你想讓程序讓我們說逗號分隔的整數列表嗎?你將要處理哪些輸入? – 2012-07-29 07:33:32