Использовать переданный тип внутри метода в конструкции is Type - C#

Узнай цену своей работы

Формулировка задачи:

Ребята, никак не могу сообразить. Допустим, есть абстрактный класс A, от которого наследуются 3 ребенка B, C, D. Есть массив из A[]; В нем лежат вразнобой В, С, D. Я хочу сделать примитивную вещь - ОДИН метод для подсчета количества в массиве элементов каждого типа. В параметре ему указать Type type, на выходе получить int. Только вот ни в какую внутри метода if (elem is type) срабатывать не хочет. Что я делаю не так? Идея примерно такова:
Листинг программы
  1. public delegate int Counter(A[] array, Type type);
  2. Counter c = (array, type) =>
  3. {
  4. int result = 0;
  5. foreach (A a in array)
  6. {
  7. if (a is type) // Doesn't work!!! Не видит от этот type хоть убей...
  8. {
  9. result++;
  10. }
  11. }
  12. return result;
  13. }
  14. // где-то в main
  15. A[] = new A[]{new B(), new C()};
  16. Console.WriteLine(c(array, B));
  17. Console.WriteLine(c(array, C));
Тяжко С# с его типизацией после JS идет...

Решение задачи: «Использовать переданный тип внутри метода в конструкции is Type»

textual
Листинг программы
  1.             Counter c = (array, type) =>
  2.                 {
  3.                     int result = 0;
  4.                     foreach (A a in array)
  5.                     {
  6.  
  7.                         if (a.GetType().Equals(type))
  8.                         {
  9.                             result++;
  10.                         }
  11.                     }
  12.                     return result;
  13.                 };

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы