Я пытаюсь найти способ поиска и проверки массива при его заполнении. Я хочу использовать метод overloaded equals, который я создал из другого класса.Нужна помощь в проверке массива для дубликатов записей при заполнении
Здесь перегруженный равно метод в классе ордена общественного: IComparable
public override bool Equals(object obj)
{
Order temp = (Order)obj;
if (orderNumber == temp.orderNumber)
return true;
else
return false;
}
в основном, я пытаюсь создать 2 массивы, так что я могу сравнить с 1 по другой и проверить дубликатов, как я прохожу с вложенным циклом, но он не работает. Он просто продолжает заполнение массива, как будто он никогда не видел второй цикл
public static void Main()
{
//Create an array of five ShippedOrder objects.
ShippedOrder[] myShippedOrder = new ShippedOrder[5];
ShippedOrder[] checkDup = new ShippedOrder[5];
//Prompt the user for values for each Orders object; do NOT allow duplicate order numbers and force the user to reenter
// the order when a duplicate order number is entered.
for (int x = 0; x < myShippedOrder.Length; ++x)
{
int y = 0;
myShippedOrder[x] = new ShippedOrder();
checkDup[y] = new ShippedOrder();
Console.Write("Please enter the order number for order {0}: ", x + 1);
checkDup[y].orderNumber = Convert.ToInt32(Console.ReadLine());
for (y = 0; y < checkDup.Length; ++y)
{
if (checkDup[y] != null && myShippedOrder[x].Equals(checkDup[y]))
{
Console.WriteLine("Sorry, this order number has already been entered, please try again");
--x;
break;
}
else myShippedOrder[x].orderNumber = checkDup[y].orderNumber;
}
Console.Write("Please enter the customers name for order {0}: ", x + 1);
myShippedOrder[x].customerName = Console.ReadLine();
Console.Write("Please enter the quantity that was ordered for order {0}: ", x + 1);
myShippedOrder[x].quantityOrdered = Convert.ToInt32(Console.ReadLine());
myShippedOrder[x].totalPrice = myShippedOrder[x].quantityOrdered * PRICEEACH + ShippedOrder.SHIPFEE;
}
какие-либо предложения о том, как использовать перегруженный равный метод в классе для того, чтобы помочь в поиске дубликатов orderNumbers, если они существуют, и удар назад в пользователь ввел неверный порядок и повторил попытку с этим местом в массиве?
Почему бы не использовать словарь? Кроме того, в любое время, когда вы перегружаете Equals, вы также должны перегружать operator == и GetHashCode(). Имеются последствия перегрузки равных, рассмотренных, например, здесь: http://stackoverflow.com/questions/9709088/when-should-a-net-class-override-equals-when-should-it-not –
Извините, я не опубликовал всю программу, но я перегрузил другие тоже. Я не думал, что это уместно для этого вопроса, поэтому я не опубликовал этот код. – programmerNOOB