【发布时间】:2013-02-17 16:58:08
【问题描述】:
public static ListOfPeople operator +( ListOfPeople x, Person y)
{
ListOfPeople temp = new ListOfPeople(x);
if(!temp.PeopleList.Contains(y))
{
temp.PeopleList.Add(y);
}
temp.SaveNeeded = true;
return temp;
}
所以,我从未使用过运算符的重载功能,我正在尝试了解如何将对象从我的类 (Person) 添加到我的 Collection 类 (ListOfPeople)。
ListOfPeople 包含一个属性List<Person> PeopleList;
我的困难在于如何在这个方法中获取一个预先存在的 List 来添加一个新的 Person 。 ListOfPeople temp = new ListOfPeople(x);
我在这一行有一个错误,因为我没有接受 ListOfPeople 参数的构造函数。如果我将其设为ListOfPeople temp = new ListOfPeople();,那么 Temp 只会调用我的默认构造函数,我只需在其中创建一个新的空列表,这也不允许我添加到预先存在的列表中。
我只是不确定如何让 'temp' 实际引用我预先存在的列表。
【问题讨论】:
-
您不应使用 + 运算符将项目添加到集合中。我相信这甚至被作为一个例子给出了运算符重载应该不被使用。
-
嗯,它正在将一个对象添加到包含在 Collection 类中的 List 中。这仍然同样糟糕吗?
-
是的,看看其他.NET列表如何实现添加项,总是通过
Add方法。 -
我个人不会以这种方式使用运算符 - 对于 .NET 来说不是惯用的;但是如果我这样做了 - 我不会进行
Contains检查。如果有人想多次添加它,那是他们的问题。
标签: c# overloading operator-keyword