public class A { int x,bool y; public A(int X) { x=X; } public A(bool Y) { y=Y; } }
现在想写一个构造函数,它有两个参数int X和bool Y,想让这个构造函数调用上述两个构造函数,如下的解决方式不予考虑:
public A(int X, bool Y):this(X)
{
y=Y;
}
有没有比较漂亮的解决办法
这种情况下个人认为应该用少参的调用多参的,比如:
1 public class A 2 { 3 int x; bool y; 4 public A(int X): this(X,true) 5 { 6 } 7 8 public A(bool Y):this(0,Y) 9 { 10 } 11 12 public A(int X, bool Y) 13 { 14 y = Y; 15 x = X; 16 } 17 }
有道理。但是有没有一个构造函数调用两个构造函数的这样的实现方法呢?
@TT天使的眼泪: 那也只能这样了,
1 public class A 2 { 3 int x; bool y; string z; 4 public A(int X) 5 { 6 x = X; 7 } 8 9 public A(int X, bool Y) : this(0) 10 { 11 Y = y; 12 } 13 14 public A(int X, bool Y, string Z) : this(0, Y) 15 { 16 z = Z; 17 } 18 }
这个是你简化之后的问题吧。。简化成int x和bool y的话就太简单了,比如可以用可选参数:
pubic A(int x = 1, int y = 2) { }
这样你只需要一个构造函数就可以了。
构造函数表面是无返回的可实际是返回了该类的对象,所以不能执行2次.不然会返回2个对象
这么想很有道理