【发布时间】:2011-08-11 21:56:42
【问题描述】:
我有一个 Equal() 方法来查看 OrderNumber 是否已经输入。我不确定如何在 for 循环数组中调用它。
这是我的平等方法
public override bool Equals(object e)
{
bool equal;
Order temp = (Order)e;
if(OrderNumber == temp.OrderNumber)
equal = true;
else
equal = false;
return equal;
}
这是 main() 的输入部分
public class week_6
{
public static void Main(string[] args)
{
ShippedOrder[] InputOrder = new ShippedOrder[5];
int x;
for(x= 0; x < InputOrder.Length; ++x)
{
InputOrder[x] = new ShippedOrder();
Console.Write("Enter order number: ");
InputOrder[x].OrderNumber = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter customer name: ");
InputOrder[x].CustName = Console.ReadLine();
Console.Write("Enter quantity: ");
InputOrder[x].Quantity = Convert.ToInt32(Console.ReadLine());
}
SippedOrder 类是 Order 类的子类。该程序编译并运行良好,无需尝试使用 equals 方法做任何事情。
我正在尝试将它放在哪里,如果他们输入相同的订单号,它会显示“对不起,订单号 '###' 是重复的。 请重新输入”
任何帮助将不胜感激
【问题讨论】:
-
你的问题能说得清楚一点吗?你问的是哪一部分?如何采用
Equals()方法覆盖并使用它来确定是否向用户显示控制台消息?或者,当您检测到使用您的Equals()覆盖输入了相同的订单时,您是否要问如何打破循环? -
我只是想将输入的订单号与之前输入的订单号进行比较。如果它们相同,则会弹出消息。我不知道该怎么做,认为 equals 方法是最好的方法。
-
如果你覆盖
Equals,请确保你也覆盖GetHashCode。如果您选择使用HashSet来跟踪以前的订单,这一点尤其重要。见msdn.microsoft.com/en-us/library/336aedhh.aspx
标签: c# arrays inheritance methods equals