Почему понятия «ковариантность» и «контравариантность» применимы при реализации методов интерфейса?

Пример использования примерно такой:

public class SomeClass : ICloneable
{
    // Some Code

    // Implementing interface method
    public object Clone()
    {
        // Some Clonning Code
    }
}

Теперь мой вопросПочему невозможно использовать «SomeClass (как он получен из объекта)» в качестве возвращаемого типа метода Clone (), если мы рассмотрим основы ковариантности и контравариантности?

Может кто-нибудь объяснить мне причину этой реализации Microsoft ????

Ответы на вопрос(6)

Ваш ответ на вопрос