1

我有一个返回列表的通用方法“GetSomeData”。我可以是 int、double、uint 的列表...

public void GenericMethod<T>()
{
   List<T> genericList = GetSomeData<T>();
   List<double> castedList1 = (List<double>) genericList;
   List<double> castedList2 = genericList.Cast<double>();  //Not working
   List<double> castedList3 = genericList.Select(f => (double)f).ToList(); //not working
}

T 可以是 int、uint、double...

有没有办法投射这个名单?

4

2 回答 2

0

尝试这个 :

List<double> castedList3 = genericList.OfType<double>().ToList();
于 2013-10-20T09:27:01.387 回答
0

这可以正常工作,但如果T无法强制转换,可能会出现运行时异常double

public void GenericMethod<T>() where T : struct
{
   List<T> genericList = GetSomeData<T>();

   IList<double> doubleList = genericList.Select(val => Convert.ToDouble(val))
                                         .ToList();
}
于 2013-10-20T09:41:39.707 回答