首页 > 解决方案 > 在 c# 和 .net 中将元素添加到列表中不起作用

问题描述

我有一个清单:

private static List<Contact> List()
{
    var contacts = new List<Contact>() { new Contact("Bob",123) };
    return contacts;
}

和一个方法,它将新联系人添加到列表中:

private static void AddContact()
{
    var contact = new Contact("Max", 123);
    List().Add(contact);
}

static void Main(string[] args)
{
    AddContact();
    ShowAllContacts();
}

private static void ShowAllContacts()
{ 
    foreach(var contact in List())
    { 
        Console.WriteLine(contact.GetContactName() + ", "
          + contact.GetContactNumber());
    }
} 

但是当我尝试显示整个列表时,它只显示实例化时列表中的元素 ( Bob,123) 而不会显示Max,123

标签: c#listelementadd

解决方案


AddContact()ist 被调用时,会创建一个新的 List List()。然后将联系人添加到这个新列表中,并且不返回列表或将其存储在任何变量中。因此,其中包含“Max”联系人的创建列表“丢失”,因为它不再可访问,并将被垃圾收集器删除。

然后在ShowAllContacts()List()再次调用时,它会创建一个新列表,其中没有“Max”联系人,因为它尚未添加到此列表中,而是添加到中创建的列表中Main()


推荐阅读