据我所知。 List Add方法的工作原理如下。
List<string> cities = new List<string>();
cities.Add("New York");
cities.Add("Mumbai");
cities.Add("Berlin");
cities.Add("Istanbul");
如果我将数据结构设计为
List<object> lstObj = new List<object>();
if (true) // string members
{
cities.Add("New York");
cities.Add("Istanbul");
}
else // List obj members here
{
List<object> AListObject= new List<object>();
cities.Add(AListObject); // how to handle this?
}
如果我在同一个函数中添加不同类型的成员,List Add
方法是否有效。
答案 0 :(得分:1)
您无法将List<object>
添加到List<string>
。您可以添加到字符串列表的唯一内容是字符串(或空引用)。你可以改用它:
List<object> cities = new List<object>();
但这似乎是一个糟糕的设计。当您使用object
作为集合的通用类型时,您实际上会失去类型安全的所有好处。
对于解析XML,我建议您查看XmlDocument。
答案 1 :(得分:1)
由于您创建了类型object
的列表,因此可以向其中添加任何内容,因为每个类型都可以装入对象。
答案 2 :(得分:1)
您可以向List<object>
添加任何内容,因此如果您将cities
更改为List<object>
,那么您的代码就可以使用。
var list = new List<object>();
list.Add("hello");
list.Add(1);
list.Add(new List<bool>());
Console.WriteLine(list.Count());
话说回来,几乎可以肯定的是编写你想做的任何事情的坏方法。
答案 3 :(得分:1)
List<object> AListObject = new List<object>();
foreach (object o in AListObject)
{
string s = o as string;
if (s != null)
{
cities.Add(s);
}
}
如果你可以使用.NET 3.5中的LINQ而不是下一步:
List<object> AListObject = new List<object>();
cities.AddRange(AListObject.OfType<string>());
答案 4 :(得分:1)
使用带有object的泛型列表作为类型参数毫无意义,也可以使用System.Collections.ArrayList。
答案 5 :(得分:0)