Ответ 1
Просто цепь для общего конструктора...
public MyObject(int setZ)
: this()
{
z = setZ;
}
С# в VS2005: если класс имеет два конструктора, каков наилучший способ для этих конструкторов разделить некоторый код?
например. Как я мог избежать наличия строк x = 5
и y = 10
в обоих конструкторах для следующего:
public class MyObject {
int x;
int y;
int z;
public MyObject() {
x = 5;
y = 10;
}
public MyObject(int setZ) {
x = 5;
y = 10;
z = setZ;
}
Просто цепь для общего конструктора...
public MyObject(int setZ)
: this()
{
z = setZ;
}
Используйте синтаксис this()
.
public MyObject(int setZ) : this() {
z = setZ;
}
Создайте другой метод:
private setDefaultNumbers() {
x = 5;
y = 10;
}
Затем обе версии вашего конструктора вызовут этот метод:
public MyObject() {
setDefaultNumbers();
}
public MyObject(int setZ) {
setDefaultNumbers();
z = setZ;
}
Это очень похоже на то, как вы это делали с помощью методов. Обычно вы делаете что-то вроде:
public void SetA(int a)
{
this.a = a;
}
public void SetAandB(int a, int b)
{
this.SetA(a);
this.b = b;
}
с конструкторами, там есть специальный синтаксис:
public void MyObject()
{
this.a = 5;
}
public void MyObject(int b)
: this()
{
this.b = 10;
}