я могу типизировать один подкласс к другому объекту подкласса в C # - PullRequest
3 голосов
/ 26 января 2012

Я хочу набрать приведение ниже:

Class A
{
}

Class B : A
{
}

Class C: A
{
}
Class D{
B b = new b();
C c = (C) b;
}

Пожалуйста, предложите, как я могу набрать приведение класса C к классу B

Ответы [ 6 ]

5 голосов
/ 26 января 2012

Нет, это невозможно, поскольку B равен , а не a C, поэтому это приведение должно завершиться неудачей.Одним из обходных путей может быть реализация пользовательского явного оператора преобразования, но в противном случае нет никакого способа - вы можете приводить только к более конкретному типу (downcast) или к базовому классу (upcast) в том же дереве наследования.

2 голосов
/ 26 января 2012

Это просто невозможно. Вы не можете к такому обращению.

На самом деле они имеют одинаковый базовый класс, но они не одинаковы. Например, взгляните на это.

Triangle составляет Shape и Rectangle это Shape

Но вы не можете преобразовать Triangle в Rectangle, потому что они разные.

2 голосов
/ 26 января 2012

Вы не можете.То, что вы можете, это бросить B в A.

1 голос
/ 26 января 2012
Animal
{
}

Giraffe : Animal
{
}

Shark : Animal
{
}

Ваш вопрос: как вы превращаете жирафа в акулу?К сожалению, это невозможно сделать.

1 голос
/ 26 января 2012

Не возможно.Классы C и B не относятся к иерархии классов.

1 голос
/ 26 января 2012

Нет, вы не можете.Если вы хотите скопировать свойства из одного класса в другой, вы можете рассмотреть AutoMapper .

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