Possible Duplicate:
In C#, why can't a List<string> object be stored in a List<object> variable
我认为这可行:
private List<DateTime> _dateTimes = new List<DateTime>();
private List<String> _strings = new List<String>();
private List<List<Object>> _listOfLists = new List<List<Object>>();
_listOfLists.Add(_dateTimes);
_listOfLists.Add(_strings);
但是,我收到一个编译器错误,指出 .Add 方法有一些无效参数...有人明白为什么吗?并且,拥有通用列表列表的解决方案是什么?
最佳答案
问题是,由于与类型安全相关的原因,您不能处理 List<string>
作为List<object>
。如果可以的话,这是可能的:
var list = (List<object>)(new List<string>());
list.Add((object)42); // this should never be allowed to compile
您可以做的是:
private List<DateTime> _dateTimes = new List<DateTime>();
private List<String> _strings = new List<String>();
private List<IList> _listOfLists = new List<IList>();
_listOfLists.Add(_dateTimes);
_listOfLists.Add(_strings);
这有效是因为 List<T>
实现IList
。当然,您现在已经通过放弃编译时类型安全性来“强制”编译代码。本质上,如果您尝试将错误类型的对象添加到 IList
之一,您就接受了这一点。例如,您将收到运行时异常。
关于c# - 列表的通用列表<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7414780/