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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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