我最近看到的是看起來像這樣一個C#構造函數...C#構造函數
public Class foo
{
public foo() : this(new bar())
{}
}
任何人可以幫我解讀? bar()適合在哪裏?
如果你可以通過在適當位置插入bar()來幫助我完成課程,以便我可以編譯/調試並查看整個圖片。
在此先感謝。
尼科斯
我最近看到的是看起來像這樣一個C#構造函數...C#構造函數
public Class foo
{
public foo() : this(new bar())
{}
}
任何人可以幫我解讀? bar()適合在哪裏?
如果你可以通過在適當位置插入bar()來幫助我完成課程,以便我可以編譯/調試並查看整個圖片。
在此先感謝。
尼科斯
Foo類應包含另一個構造,採用一個酒吧對象作爲參數。
public class foo
{
public foo()
: this(new bar())
{ }
public foo(bar b)
{
}
}
public class bar
{
}
會有階級富第二構造函數簽名這樣
public foo(bar Bar)
{
... do something with bar here;
}
這是一種常見的技術,以確保所有建設者經過一個單點,所以你只需要改變這一點(也可能有其他用途,但我不知道他們的)。
我已經看到了它在使用默認參數,如事情:
class Rational {
private:
long numerator;
long denominator;
public:
void Rational (long n, long d) {
numerator = n;
denominator = d;
}
void Rational (long n): Rational (n,1) {}
void Rational (void): Rational (0,1) {}
void Rational (String s): Rational (atoi(s),1) {}
}
熊的語法,我沒有一個編譯器隨時進入這裏,但基本意圖是集中儘可能多代碼儘可能在第一個構造函數中。
所以,如果,例如,您可以添加一個檢查,以確保分母大於零或者分子和分母使用的是最大公約數的方法降低,它只有有在代碼中的一個點發生。
有趣。將代碼放入空括號中會發生什麼情況? – Svante 2009-04-20 11:12:32