@DarkByte2015

Фильтрация с помощью OfType?

Почему вот этот пример ничего не выводит?

class Program
{
	static void Main(string[] args)
	{
		IEnumerable<IEnumerable<A>> a = new List<IEnumerable<A>> { new List<A> { new B(), new B() }, new List<A> { new C(), new C() } };
		var b = a.OfType<IEnumerable<B>>();
		var c = a.OfType<IEnumerable<C>>();

		foreach (var collections in b)
			foreach (var items in collections)
				items.foo();

		foreach (var collections in c)
			foreach (var items in collections)
				items.foo();
	}
}

abstract class A
{
	public abstract void foo();
}

class B : A
{
	public override void foo() => Console.WriteLine("B");
}

class C : A
{
	public override void foo() => Console.WriteLine("C");
}


P.S. Имхо вывод должен быть: BBCC
  • Вопрос задан
  • 174 просмотра
Решения вопроса 1
@leremin
atypical programmer
Нет, не должен. У вас лист типа A, а вы проверяете на B или C
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы