首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

多态有关问题 (高级)

2013-01-26 
多态问题 (高级)我现在有个需求,想把子类的对象集合赋值给父类引用集合,出例:Listobject obj new List

多态问题 (高级)
    我现在有个需求,想把子类的对象集合赋值给父类引用集合,出例:
List<object> obj = new List<string>();
string是继承至Object类的,按说应该可以的,但是语法上不允许,
请问大虾们有木有解决办法?
[解决办法]
List<string> list = new List<string>() { "a", "b" };
List<object> obj = list.Select(x => (object)x).ToList();
[解决办法]
  List<string> list = new List<string>() { "a", "b" };
            List<object> obj = list.Select(T => (object)T).ToList();
          
[解决办法]
另外这不是多态,泛型和类型并不是一个概念
[解决办法]

List<string> sdata=new List<string>();
List<object> data = sdata.Cast<object>().ToList();

[解决办法]
如果利用协/逆变关系可以

  List<string> a = new List<string> { "1", "2" };
   List<object> b = a.Cast<object>().ToList();
  //下面的就是net4后的协/逆变关系,因为list<T>本身木有实现协/逆申明,但是IEnumerable<T>则申明
//了协/逆,所以他可以强制进行这种转换
   List<object> c =((IEnumerable<object>)a.AsEnumerable()).ToList();

 

热点排行