2011-03-31 54 views
2

如何投两名列表...如何在C#

演员名单<>我想类似的东西

List<Obj1> list = new List<Obj1>(); 
list.add(new Obj1); 

List<Obj2> list2 = new List<Obj2>(); 

list2.add((Obj1)list[0]); 
+0

对不起这个代码没有任何意义;你为什么要将'Obj1'的对象转换为'Obj1'并将其视为'Obj2'? 'Obj2'必须是'Obj1'的基础或接口;或者实现一个明确的转换运算符 – 2011-03-31 13:06:34

+0

除非'Obj2'派生自'Obj1',否则你不能这样做。 – Jon 2011-03-31 13:07:11

+2

@Jon:实际上相反:'Obj1'必须从'Obj2'派生。 – 2011-03-31 13:12:38

回答

5

您可能感兴趣的Enumerable扩展方法Cast

IEnumerable<Obj2> enumerable = list.Cast<Obj2>(); 

然后,您可以根据需要转换成List

var list2 = enumerable.ToList() 

(这显然假定从Obj1投给Obj2是有效的:即Obj2Obj1或转换操作符存在派生)

0

要添加单个元素,只要您修复语法,代码就可以工作:

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>());

1

取代的最后一行,我不知道你正在尝试做的,但它可能是这样的

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>());