用不同的参数C#类初始化?

时间:2017-09-05 13:42:23

标签: c# class oop

我有一个班级,我用普通public Class1(int arg1, int arg2, int arg3) { ... }初始化 这很简单。 但我想要实现的是需要改变的论点。 例如,如果您将1传递给arg1,那么第二个和第三个参数不会采用Int而是采用浮点数。

可以在C#.NET Core中做到吗? 如果没有,C#中是否可能? 怎么样?

3 个答案:

答案 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,哪些是设置。

可能不是最好的方法,但它有效......不会用它,只是想到它......