列表C# 添加方法

发布于 2024-10-09 00:51:55 字数 609 浏览 4 评论 0原文

据我所知。列表添加方法的工作原理如下。

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 方法是否有效。

As I know. List Add method works as below.

List<string> cities = new List<string>();
cities.Add("New York");
cities.Add("Mumbai");
cities.Add("Berlin");
cities.Add("Istanbul");

If I designed the data structure as this

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?
}

Does the List Add method works or not if I add different types members in the same function.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

再浓的妆也掩不了殇 2024-10-16 00:51:55

您无法将 List添加到 List。您可以添加到字符串列表的唯一内容是字符串(或空引用)。你可以用这个来代替:

List<object> cities = new List<object>();

但这似乎是一个糟糕的设计。当您使用object作为集合的泛型类型时,您实际上失去了类型安全的所有好处。

为了解析 XML,我建议您查看 XmlDocument

You can't add a List<object> to a List<string>. The only thing you can add to list of strings is strings (or null references). You could use this instead:

List<object> cities = new List<object>();

But this seems like a bad design. When you use object as the generic type of a collection you effectively lose all the benefits of type-safety.

For parsing XML I'd suggest you look at XmlDocument.

人海汹涌 2024-10-16 00:51:55

由于您创建了一个 object 类型的列表,因此您可以向其中添加任何内容,因为每种类型都可以装箱到一个对象中。

Since you created a list of type object you can add anything to it since every type can be boxed into an object.

坐在坟头思考人生 2024-10-16 00:51:55

您可以向 List添加任何内容,因此,如果您将 cities 更改为 List,那么您的代码就可以工作。

var list = new List<object>();

list.Add("hello");
list.Add(1);
list.Add(new List<bool>());

Console.WriteLine(list.Count());

话虽如此,无论您想要做什么,这几乎肯定是一种糟糕的编码方式。

You can add anything to a List<object>, so if you changed cities to a List<object> then your code would work.

var list = new List<object>();

list.Add("hello");
list.Add(1);
list.Add(new List<bool>());

Console.WriteLine(list.Count());

Having said that, it's almost certainly a bad way to code whatever it is you're trying to do.

就像说晚安 2024-10-16 00:51:55
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>());
List<object> AListObject = new List<object>();
foreach (object o in AListObject)
{
    string s = o as string;
    if (s != null)
    {
        cities.Add(s);
    }
}

If you could use LINQ from .NET 3.5 than you could do next:

List<object> AListObject = new List<object>();
cities.AddRange(AListObject.OfType<string>());
心在旅行 2024-10-16 00:51:55

使用以对象作为类型参数的通用列表是没有意义的,还不如使用 System.Collections.ArrayList。

There's no point using a generic list with object as the type parameter, might as well use a System.Collections.ArrayList.

绝影如岚 2024-10-16 00:51:55

您应该使用 List.AddRange将多个项目添加到列表的方法。

cities.AddRange(AListObject);

但是,尝试将 object 添加到 string 列表时会遇到问题。

You should use the List.AddRange method for adding multiple items to a list.

cities.AddRange(AListObject);

However, you'll have problems trying to add object to a list of string.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文