Здравствуйте, nikov, Вы писали:
N>Здравствуйте, VladD2, Вы писали:
TB>>>Только какой тип у этого x внутри блока? B или C?
VD>>Наиболее частный общий.
N>Он может быть неоднозначным, например, у них могут быть несколько общих интерфейсов, не связанных друг с другом. Или, например, у контравариантных делегатов Action<Array> и Action<IList<object>> есть общий базовый тип MulticastDelegate, но он не самый специфичный. Потому что у них ещё есть более узкие общие базовые типы Action<string[]>, Action<string[][]> (и много других), но ни один из них не является более специфичным чем другой, хотя они все более специфичны, чем MulticastDelegate.
Подобная ситуация например при выборе перегрузок. Как то же компилятор решает эту проблему, вот и в подобном паттерне мог бы туже логику использовать.