C # пытается присвоить класс другому классу - PullRequest
1 голос
/ 11 декабря 2011

Я пытаюсь запустить следующий код:

classA = classD;

, чтобы присвоить значения в classA значению classD (переменная используется совместно с другим классом с именем 'classC').

вышеприведенная строка обычно работает в C ++, но в C # возвращает ошибку!это возможно в C #?

Ответы [ 2 ]

2 голосов
/ 11 декабря 2011

Из комментариев A : D, поэтому все A равны D, но не все D обязательно A.

То есть с двумя переменными:

A classA;
D classD = ...

Нам нужно

classA = (A) classD;

Это делает проверку типа, чтобы подтвердить, что конкретный classD является на самом деле также A. Если это так (или null), то присвоение выполнено успешно; в противном случае возникает исключение.

Это сделано для того, чтобы вы не присвоили classA что-то, что на самом деле не A.

Обратите внимание, что это неявный другой способ, так как компилятор знает, что он действителен:

classD = classA; // always valid - no type check
0 голосов
/ 11 декабря 2011

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

Сказать classA = classB, когда классы не связаны в иерархии классов, приведет к ошибке типа. Если они связаны, то все, что вы делаете, это изменяете значение переменной classA, ничего не копируя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...