как назначить объект, который будет определен в прогоне C# - PullRequest
0 голосов
/ 05 февраля 2020

Я хочу, чтобы объект назначался динамически в зависимости от условия, мне не разрешили создать переменную без объявления. var carSegment;

        switch (segmentType)
        {
            case "CarSeg":
                carSegment = new CarSeg();
                break;
            case "NonAirSeg":
                carSegment = new NonAirSeg();
                break;

        }

1 Ответ

4 голосов
/ 05 февраля 2020

Чтобы сделать это, CarSeg и NonAirSeg должны иметь общий интерфейс или базовый класс, который будет типом для carSegment. Например, если они оба реализуют интерфейс с именем ISegment, то вы можете сделать это:

ISegment carSegment = null;

Тогда назначения в вашем операторе switch будут работать в их текущем состоянии. То же самое верно, если они реализуют общий класс предков.

Уловка в том, что carSegment - это тот общий тип и только этот общий тип. Если вам нужны подробности для этих двух разных типов, вам, вероятно, придется переосмыслить свой дизайн за пределы этого одного сегмента кода.

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