Использовать переданный тип внутри метода в конструкции is Type - C#
Формулировка задачи:
Ребята, никак не могу сообразить.
Допустим, есть абстрактный класс A, от которого наследуются 3 ребенка B, C, D.
Есть массив из A[]; В нем лежат вразнобой В, С, D.
Я хочу сделать примитивную вещь - ОДИН метод для подсчета количества в массиве элементов каждого типа.
В параметре ему указать Type type, на выходе получить int.
Только вот ни в какую внутри метода if (elem is type) срабатывать не хочет.
Что я делаю не так?
Идея примерно такова:
Тяжко С# с его типизацией после JS идет...
Листинг программы
- public delegate int Counter(A[] array, Type type);
- Counter c = (array, type) =>
- {
- int result = 0;
- foreach (A a in array)
- {
- if (a is type) // Doesn't work!!! Не видит от этот type хоть убей...
- {
- result++;
- }
- }
- return result;
- }
- // где-то в main
- A[] = new A[]{new B(), new C()};
- Console.WriteLine(c(array, B));
- Console.WriteLine(c(array, C));
Решение задачи: «Использовать переданный тип внутри метода в конструкции is Type»
textual
Листинг программы
- Counter c = (array, type) =>
- {
- int result = 0;
- foreach (A a in array)
- {
- if (a.GetType().Equals(type))
- {
- result++;
- }
- }
- return result;
- };
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д