на этот раз немного другой вопрос о дисперсии.
Я понял из экспериментов, что С# не позволяет вам переопределить виртуальную функцию контравариантной функцией? Если это так, как вы это делаете, так как я продолжаю получать «подходящая перегрузка метода не найдена». Если это не так, то почему? если базовый класс указывает, что значение всегда будет int, а подкласс может принимать объект, в чем проблема?
То же, что и возвращаемые типы, должны быть ковариантными в их переопределяющей сигнатуре.
Какие языки позволяют это сделать? (С++/Java я смотрю на вас) и если они позволят вам использовать, какие типы дисперсии? (тип возвращаемого значения/список аргументов и т. д.)
Может быть, у вас есть несколько переопределений? Я не понимаю, почему бы и нет, если подписи были технически уникальными.
Почему C#/CLR не поддерживает переопределение метода co /противовариантность?
Читаю и не вижу ответов ни на один вопрос. Я знаю об общей дисперсии, и я знаю, что это потрясающе. Я хочу знать о вариации сигнатуры методов, и не только в С#, но и в С# (т.е. включая, но не ограничиваясь). Если он не существует, я хотел бы получить подтверждение этого и объяснение (это деталь реализации? Моя теория типов неверна? Просто CLR/C# не поддерживает эту конкретную функцию? Это то, что я не знаю не думал, так как мне не приходится иметь дело с реализацией CLR и, следовательно, я не знаю конкретных сложных деталей?)