构造函数是否可以包含确定要调用的其他构造函数重写的逻辑
本文关键字:构造函数 其他 重写 调用 是否 包含确 | 更新日期: 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的构造函数中,只能调用基类构造函数或同一类的重载构造函数。