我已经编写了这个方法来将逗号分隔的字符串转换为其类型的List:
public List<T> GetListFromString<T>(string commaSplited)
{
return commaSplited.Split(',').Cast<T>().ToList();
}
但它抛出一个异常,说'指定的演员表无效'。
我用长输入测试了它。
答案 0 :(得分:7)
如果 T string (我测试过它),你的代码肯定有效。
如果 T 是其他,比如说 int ,你就会得到这个例外。
此作品
List<string> result = GetListFromString<string>("abc, 123, hij");
此失败
List<int> resultInt = GetListFromString<int>("23, 123, 2");
这是因为无法将 string 转换或转换为 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();
}
然而所有给定的字符串必须可转换为 T ,例如以下内容仍然会失败:
List<int> resultIntFail = GetListFromString<int>("23, abc, 2");
因为“abc”无法转换为 int 类型。
此外, T 必须是System.Convert()知道如何从字符串转换为的某种类型。