Проверка наличия объекта в классе - C#
Формулировка задачи:
Здравствуйте. Возникла проблема с методом поиска. При запуске проги создаю массив, заполняю его объектами трех классов. Поиск у меня должен работать только по объектам класса Инструмент. Но если я не ввожу объект класса Инструмент при заполнении массива, а потом вызываю поиск, то прога крашится, потому что нет объекта этого класса(как мне кажется, что наверняка и есть). Как мне в этом методе поиска проверить, существуют ли объекты нужного класса и если их нет - вывести соответствующее сообщение. Или может какой другой способ борьбы с этим предложите?
using System; namespace CIW { abstract class City { public string instrument { get; set; } public abstract void Input(); public abstract void Output(); } class Store : City { string name; public string getName(){ return name;} public void setName( string n){name = n;} string adress; public string getAdress(){ return adress;} public void setAdress( string a){adress=a;} int oNumber; public int ONumber { get{ return oNumber;} set { oNumber = value;} } public override void Input() { Console.Write("Введите название магазина: "); name = Console.ReadLine(); Console.Write("Введите адрес: "); adress = Console.ReadLine(); Console.Write("Введите количество отделов: "); oNumber = int.Parse(Console.ReadLine()); } public override void Output() { Console.WriteLine ("Магазин: "); Console.WriteLine ("Название: {0}\nАдрес: {1}\nКоличество отделов: {2}\n", name, adress, oNumber); Console.WriteLine ("-----------------"); } } class Otdel : City { string name; public string getName(){ return name;} public void setName( string n){name = n;} int iNumber; public int INumber { get{ return iNumber;} set { iNumber = value;} } string date; public string getDate(){ return date;} public void setDate( string d){date = d;} public override void Input() { Console.Write("Введите название: "); name = Console.ReadLine(); Console.Write("Введите количество наименований: "); iNumber = int.Parse(Console.ReadLine()); Console.Write("Введите дату создания отдела: "); date = Console.ReadLine(); } public override void Output() { Console.WriteLine ("Отдел"); Console.WriteLine ("Название: {0}\nКоличество наименований инструментов: {1}\nДата создания отдела: {2}\n", name, iNumber, date); Console.WriteLine ("-----------------"); } } class Instrument : City { string name; public string getName(){ return name;} public void setName( string n){name=n;} int price; public int Price { get{ return price;} set { price= value;} } int number; public int Number { get{ return number;} set { number = value;} } public override void Input() { Console.Write("Введите название: "); name = Console.ReadLine (); Console.Write("Введите цену: "); price = int.Parse(Console.ReadLine()); Console.Write("Введите количество: "); number = int.Parse(Console.ReadLine()); } public override void Output() { Console.WriteLine ("Инструмент"); Console.WriteLine ("Название: {0}\nЦена: {1}\nКоличество: {2}\n", name, price, number); Console.WriteLine ("-----------------"); } } class Methods { public static void nMass(ref City[] mass) { Console.Write("Введите размер массива: "); int n = int.Parse(Console.ReadLine()); mass = new City[n]; for (int i = 0; i < n; i++) mass[i] = new Store(); } public static void Enter(City[] mass) { int n; for (int i = 0; i < mass.Length; i++) { Console.Write("1 - Магазин\n2 - Отдел\n3 - Инструмент\n"); n = int.Parse(Console.ReadLine()); if (n == 1) { Store obj = new Store(); obj.Input(); mass[i] = obj; } else if (n == 2) { Otdel obj = new Otdel(); obj.Input (); mass[i] = obj; } else if (n == 3) { Instrument obj = new Instrument(); obj.Input (); mass[i] = obj; } } } public static void Out(City[] mass) { for (int i = 0; i < mass.Length; i++) mass[i].Output(); } public static void Find(City[] mass) { Console.WriteLine("Введите название инструмента: "); string st = Console.ReadLine(); for (int i = 0; i < mass.Length; i++) if (st.CompareTo(((Instrument)mass[i]).getName()) == 0) { mass[i].Output (); return; } Console.WriteLine(st + " в списке нет"); } } class Program { static void Main() { City[] mass = new City[] { new Store() }; while (true) { Console.Write("1 - Создание массива\n2 - Ввод данных\n3 - Вывод на экран\n4 - Поиск\n5 - Выход\n"); switch (Console.ReadLine()) { case "1": Methods.nMass(ref mass); break; case "2": Methods.Enter(mass); break; case "3": Methods.Out(mass); break; case "4": Methods.Find(mass); break; case "5": return; } } } } }
Решение задачи: «Проверка наличия объекта в классе»
textual
Листинг программы
public static void Find(City[] mass) { Console.WriteLine("Введите название инструмента: "); string st = Console.ReadLine(); for (int i = 0; i < mass.Length; i++) { var instrument = mass[i] as Instrument; if (instrument != null && instrument.getName() == st) { mass[i].Output (); return; } } Console.WriteLine(st + " в списке нет"); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д