Fel*_*ala 4 c# generics casting
虽然我可以将一个字符串向上转换为一个对象,但是我无法将IList字符串向上转换为IList对象.怎么会?现在该怎么做才能将所有项目都复制到一个新的IList?
static void ThisWorks()
{
IList<object> list = new List<object>();
list.Add("I can add a string since string : object");
}
static void ThisDoesNotWork()
{
// throws an invalid cast exception
IList<object> list = (IList<object>) new List<string>();
list.Add("I'm never getting here ... why?");
}
Run Code Online (Sandbox Code Playgroud)
这是不可能的,因为泛型是不变的(从C#3.0开始).
您可以使用以下方法解决此问题
var objectList = list.Cast<object>().ToList();
Run Code Online (Sandbox Code Playgroud)