Java и C# – почему я могу привести каждый объект к интерфейсу (явно)C#

Место общения программистов C#
Anonymous
Java и C# – почему я могу привести каждый объект к интерфейсу (явно)

Сообщение Anonymous »

Я знаю концепцию полиморфизма и могу понять эту идею, но я все же нашел ответ на вопрос, почему и в Java, и в C# компилятор позволяет вам преобразовать некоторый класс в интерфейс, хотя этот класс вообще не реализует интерфейс.
class MyStupidClass{

}

interface Ix {
void doSomehting();
}

//inside some method:
Ix a = (Ix)new MyStupidClass();//compiled and will throw runtime error.


Во время выполнения произойдет сбой. И в Java, и в C#.
Я могу понять концепцию понижающего приведения, согласно которой дочерний элемент иногда может быть типом родительского, но не это приведение интерфейса.
Изменить – добавить пример понижающего приведения:
class A{

}

class A2 extends A{

}
class A1 extends A{

}

//at some method:

//A a2 = (A)new MyStupidClass();//won't compiled
A a3 = new A2();

A1 a4 = (A1)a3;//can make sense because sometimes it will be A1.



Подробнее здесь: https://stackoverflow.com/questions/786 ... explicitly

Вернуться в «C#»