因此,編譯器不會允許我重載我的類的==和!=運算符。這裏是一流的樣子:C#修飾符覆蓋對此項無效
public class Item
{
public string _name;
public double _weight;
public decimal _wholesalePrice;
public int _quantity;
public Item(string name, double weight, decimal wholesalePrice, int quantity)
{
_name = name;
_weight = weight;
_wholesalePrice = wholesalePrice;
_quantity = quantity;
}
public static override bool operator ==(Item left, Item right)
{
if (left._name == right._name)
{
return true;
}
return false;
}
public static override bool operator !=(Item left,Item right)
{
return !(left == right);
}
}
編譯器不斷告訴我「的修改‘覆蓋’是無效的這個項目起初我還以爲我可能沒有聲明的基礎方法,虛擬的,但我類並沒有的。任何想法是怎麼回事?
幸運的是,我覆蓋了下面的這些方法:)我只是沒有包含它們。無論如何,等於什麼?我什麼時候會用這個來代替==運算符? – Nick 2012-07-29 15:15:58
==運算符通常比較對象引用,而不是對象內的值。 Equals方法比==運算符更頻繁地用於比較對象的值。大多數.NET類(Dictionary等)都使用Equals方法來比較對象,所以如果你只是重載==操作符,這些類將不會像預期的那樣工作。 – 2012-07-29 17:58:11