【问题标题】:how to assign a object that will be determined run in C#如何分配将在 C# 中运行的对象
【发布时间】:2020-02-05 13:17:16
【问题描述】:

我想根据条件动态分配对象,我不允许在没有声明的情况下创建变量。 var carSegment;

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

        }

【问题讨论】:

  • 如果CarSegNonAirSeg有共同祖先,可以在switch语句前做Ancestor carSegment;
  • 如果您不知道carSegment 变量是什么类型,您希望以后如何使用它?在我看来,这像是一种糟糕的代码气味。

标签: asp.net asp.net-mvc asp.net-core c#-4.0


【解决方案1】:

为了做到这一点,CarSegNonAirSeg 都需要共享一个接口或一个基类,这将是carSegment 的类型。例如,如果它们都实现了一个名为ISegment 的接口,那么您可以这样做:

ISegment carSegment = null;

然后您的switch 语句中的分配将在其当前状态下工作。如果它们实现了一个共同的祖先类,情况也是如此。

要注意的是carSegment 是那个通用类型,并且只是那个通用类型。如果您需要这两种不同类型的细节,那么您可能需要在这一代码段的范围之外重新考虑您的设计。

【讨论】:

    猜你喜欢
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多