c# - 在 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
。
解决方案
当AddContact()
ist 被调用时,会创建一个新的 List List()
。然后将联系人添加到这个新列表中,并且不返回列表或将其存储在任何变量中。因此,其中包含“Max”联系人的创建列表“丢失”,因为它不再可访问,并将被垃圾收集器删除。
然后在ShowAllContacts()
您List()
再次调用时,它会创建一个新列表,其中没有“Max”联系人,因为它尚未添加到此列表中,而是添加到中创建的列表中Main()
。
推荐阅读
- javascript - 有没有更好的方法来编写这个 switch 语句 javascript
- android - Kotlin Android Spinner 在加载时使应用程序崩溃
- c - 当目标没有足够的空间时使用`strcat()`的正确方法?
- amazon-web-services - CloudWatch:一些指标需要计算所有时间,而不是一段时间
- r - 如何在 cv.glmnet 中修复不同行的错误?
- angular - Firestore - 我想动态地将 where 语句添加到我的集合中
- python - 使用 pd.read_csv() 读取每小时数据
- java - 当我运行以下程序时显示绑定错误异常的索引
- r - 因果影响包:根据模型估计计算后尾区概率
- sql - 根据另一列中的值更改聚合函数内的值?