我有一个班级,我用普通public Class1(int arg1, int arg2, int arg3) { ... }
初始化
这很简单。
但我想要实现的是需要改变的论点。
例如,如果您将1
传递给arg1
,那么第二个和第三个参数不会采用Int而是采用浮点数。
可以在C#.NET Core中做到吗? 如果没有,C#中是否可能? 怎么样?
答案 0 :(得分:2)
您可以将构造函数重载为
public Class1(int arg1, float arg3)
答案 1 :(得分:1)
为什么不创建两个不同的重载构造函数:
public Class1(int arg1, int arg2, int arg3) {
if(arg1 == 1) {
throw new InvalidOperationException("Wrong constructor");
}
...
}
public Class1(int arg1, float arg2, float arg3) {
if(arg1 != 1) {
throw new InvalidOperationException("Wrong constructor");
}
...
}
或者,如果你喜欢它没有例外(这将是我的首选方式):
public Class1(int arg1, float _arg2, float _arg3) {
if(arg1 != 1) { // Your int constructor, use arg2 and arg3 vars declared below
int arg2 = (int) _arg2;
int arg3 = (int) _arg3;
...
} else {
// Your float constructor, use the _arg2 and _arg3 as your floats
...
}
}
您无法在运行时更改变量的预期解决方案,但我认为我发布的最后一个代码非常接近。
答案 2 :(得分:0)
所以我确实找到了另一个答案。
你可以创建一个包含所有参数的构造函数,然后允许它们为null,然后检查哪些是null,哪些是设置。
可能不是最好的方法,但它有效......不会用它,只是想到它......