Это поставит вопрос и приведет к конфликтам.
Например, скажем, B
наследуется от A
.
Как бы компилятор понял:
f(A1, A2, B1, B2)
Это будет означать f({A1, A2}, {B1, B2})
или f({A1, A2, B1}, {B2})
?
Я думаю, что теоретически компилятор может быть умным и обнаруживать конфликты.
Однако изначально, когда были разработаны сами .NET и C #, идея состояла в том, чтобы попытаться избежать однозначных и хитрых случаев, подобных этому.