如何投两名列表...如何在C#
演员名单<>我想类似的东西
List<Obj1> list = new List<Obj1>();
list.add(new Obj1);
List<Obj2> list2 = new List<Obj2>();
list2.add((Obj1)list[0]);
如何投两名列表...如何在C#
演员名单<>我想类似的东西
List<Obj1> list = new List<Obj1>();
list.add(new Obj1);
List<Obj2> list2 = new List<Obj2>();
list2.add((Obj1)list[0]);
您可能感兴趣的Enumerable扩展方法Cast。
IEnumerable<Obj2> enumerable = list.Cast<Obj2>();
然后,您可以根据需要转换成List
:
var list2 = enumerable.ToList()
(这显然假定从Obj1
投给Obj2
是有效的:即Obj2
从Obj1
或转换操作符存在派生)
要添加单个元素,只要您修复语法,代码就可以工作:
List<Obj1> list = new List<Obj1>();
list.Add(new Obj1());
List<Obj2> list2 = new List<Obj2>();
list2.Add((Obj1)list[0]);
来串联整个列表,你可以用list2.AddRange(list.Cast<Obj1>());
取代的最后一行,我不知道你正在尝试做的,但它可能是这样的
var nums = new List<int> {3,1,4,1,5,9,2,6,5};
var words = new List<string> {"Do", "not", "disturb", "my", "circles"};
words.AddRange(nums.Cast<string>());
对不起这个代码没有任何意义;你为什么要将'Obj1'的对象转换为'Obj1'并将其视为'Obj2'? 'Obj2'必须是'Obj1'的基础或接口;或者实现一个明确的转换运算符 – 2011-03-31 13:06:34
除非'Obj2'派生自'Obj1',否则你不能这样做。 – Jon 2011-03-31 13:07:11
@Jon:实际上相反:'Obj1'必须从'Obj2'派生。 – 2011-03-31 13:12:38