简体   繁体   English

将通用类型列表转换为特定类型列表

[英]Casting generic type list to specific type list

I have a generic method 'GetSomeData' that returns a list. 我有一个通用方法'GetSomeData',它返回一个列表。 I can be a list of int, double, uint... 我可以是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 can be int, uint, double... T可以是int,uint,double ...

Is there a way to cast this list? 有没有一种方法可以投射此列表?

尝试这个 :

List<double> castedList3 = genericList.OfType<double>().ToList();

This works fine, but may have runtime exceptions if T can't be casted to double 这可以正常工作,但是如果不能将T强制转换为double ,则可能会出现运行时异常

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

   IList<double> doubleList = genericList.Select(val => Convert.ToDouble(val))
                                         .ToList();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM