int a, b, c;
Constructor()
{
a = 5;
b = 10;
c = 15;
//do stuff
}
Constructor(int x, int y)
{
a = x;
b = y;
c = 15;
//do stuff
}
Constructor(int x, int y, int z)
{
a = x;
b = y;
c = z;
//do stuff
}
为了防止“东西”和一些重复的任务,我尝试了类似:
int a, b, c;
Constructor(): this(5, 10, 15)
{
}
Constructor(int x, int y): this(x, y, 15)
{
}
Constructor(int x, int y, int z)
{
a = x;
b = y;
c = z;
//do stuff
}
这适用于我想要做的,但我有时需要使用一些冗长的代码来创建新的对象或进行一些计算:
int a, b, c;
Constructor(): this(new Something(new AnotherThing(param1, param2, param3),
10, 15).CollectionOfStuff.Count, new SomethingElse("some string", "another
string").GetValue(), (int)Math.Floor(533 / 39.384))
{
}
Constructor(int x, int y): this(x, y, (int)Math.Floor(533 / 39.384))
{
}
Constructor(int x, int y, int z)
{
a = x;
b = y;
c = z;
//do stuff
}
此代码是非常像以前一样,只有被传递的参数不是很可读。 我宁愿做这样的事情:
int a, b, c;
Constructor(): this(x, y, z) //compile error, variables do not exist in context
{
AnotherThing at = new AnotherThing(param1, param2, param3);
Something st = new Something(aThing, 10, 15)
SomethingElse ste = new SomethingElse("some string", "another string");
int x = thing.CollectionOfStuff.Count;
int y = ste.GetValue();
int z = (int)Math.Floor(533 / 39.384);
//In Java, I think you can call this(x, y, z) at this point.
this(x, y, z); //compile error, method name expected
}
Constructor(int x, int y): this(x, y, z) //compile error
{
int z = (int)Math.Floor(533 / 39.384);
}
Constructor(int x, int y, int z)
{
a = x;
b = y;
c = z;
//do stuff
}
基本上,我正在创建的构造函数体中的参数。 然后,我想那些内置的参数传递给另一个构造。 我想我还记得能够使用“this”和“超级”的关键字,而另一个构造体内部的Java编码时要调用构造函数。 这似乎并不可能在C#。
有没有一种方法可以轻松地做到这一点? 我做了什么错误? 如果这是不可能的,我应该只是与不可读的代码棒?
我想我随时可以削减重复的代码到另一个方法完全构造函数之外。 然后,每个构造只想做自己的事,并呼吁通过其他构造共享的代码。