构造函数是否可以包含确定要调用的其他构造函数重写的逻辑

本文关键字:构造函数 其他 重写 调用 是否 包含确 | 更新日期: 2023-09-27 18:18:20

可以在c#中决定构造函数,哪些其他覆盖构造函数使用?下面的代码无法编译!我不知道使用哪个调用

    public IntRange(int val, bool isMax)
        : isMax ? this() : this()
    {
        if (isMax)
        {
            IntRange(0, val);
        }
        else
        {
            IntRange(val, int.MaxValue);
        }
    }

构造函数是否可以包含确定要调用的其他构造函数重写的逻辑

如何:

    class IntRange {
      public IntRange(int val, bool isMax)
        : this(isMax ? 0 : val, isMax ? val : int.MaxValue) {
      }
      public IntRange(int min, int max) {
      }
    }

您可以使用对象上的静态方法实现这种事情,如下所示

class IntRange {
    public IntRange(int min, int max) {
       // write code here
    }
     public static IntRange Construct(int val, bool isMax) {
         if (isMax) {
             return new IntRange(0, val);
         } else {
             return new IntRange(val, int.MaxValue);
         }
     }
}

您甚至可以将构造函数public IntRange(int min, int max)设置为私有,以强制使用静态方法。

我发现构造这样的对象的静态方法在可能想要创建子类时特别有用。

由于该语句,无法编译isMax吗?This (): This ()在after的构造函数中,只能调用基类构造函数或同一类的重载构造函数。