例如,如果我有一个类:
public class StuffHolder
{
List<Stuff> myList;
public StuffHolder()
{
myList = newList<Stuff>();
myList.Add(new Stuff(myList));
myList[0].stuffHappens();
}
}
和一个 Stuff 对象:
public class Stuff
{
List<Stuff> myList;
public Stuff(List<Stuff> myList)
{
this.myList = myList;
}
public void stuffHappens()
{
myList.Remove(this);
}
}
调用 stuffHappens() 而不是让 stuff 将应删除的信息传递给 StuffHolder 类并让 StuffHolder 类删除该特定 Stuff 的缺点是什么?
最佳答案
如果 stuffHappens() 一次出现在多个线程中,就会有危险,因为 List<T>
集合不是线程安全的。
更大的危险是责任的混淆,因为 Stuff 的工作可能不应该知道它被存储在一个集合中。随着系统的成长和发展,这种设计“模糊性”会导致越来越多的困惑。
关于c# - 一个对象从它所在的列表中删除自己的潜在危险是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11302766/