Использовать переданный тип внутри метода в конструкции 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;
};