我现在有个需求,想把子类的对象集合赋值给父类引用集合,出例:
List<object> obj = new List<string>();
string是继承至Object类的,按说应该可以的,但是语法上不允许,
请问大虾们有木有解决办法?
List<object> obj = new List<string>();
string是继承至Object类的,按说应该可以的,但是语法上不允许,
请问大虾们有木有解决办法?
List<object> obj = list.Select(x => (object)x).ToList();
List<object> obj = list.Select(T => (object)T).ToList();
temp.Add("aa");
temp.Add("bb");foreach (object str in temp)
Console.WriteLine(str);List<object> obj = new List<string>();
//这里是不能用string的,因为它和obj类型不一样, List<object>.
obj.Add(1);
这就是你的按理说可以?
List<object> data = sdata.Cast<object>().ToList();
List<object> b = a.Cast<object>().ToList();
//下面的就是net4后的协/逆变关系,因为list<T>本身木有实现协/逆申明,但是IEnumerable<T>则申明
//了协/逆,所以他可以强制进行这种转换
List<object> c =((IEnumerable<object>)a.AsEnumerable()).ToList();
CLR事实上并不支持"协变和逆变",所以只能小修小补地给接口、委托这样非具体类型增加协变和逆变,事实上就是骗骗编译器的小把戏罢了。
lambda表达式,唉,昨天连夜学了一下!!压力啊