2016-03-03 162 views
0

可以創建對象嗎?我的意思是,當我有下面的類,它有兩個參數創建對象

class Foo { 
    public Foo(int x, int y) {} 
} 

和下面的方法,這需要Foo對象

public void do(Foo foo) {} 

可我當時寫這樣的事情

do({1,2}); 

而不是此

do(new Foo(1,2)); 

如果Foo有一個非常長的名字並被幾個命名空間包圍,這將會特別有用。

+2

「*可我然後寫這樣的事*」 - 不,你不能。在C#中沒有用於創建對象的「簡短」。 –

+0

也許如果你正在重新編碼.net C#編譯器,你可以;-) – brothers28

+0

@AndyKorneyev:謝謝,這是一個恥辱。我來自C++的背景,這就是爲什麼我問。 – gartenriese

回答

0

簡短的回答

你就是不行。只有屬性/字段初始化的構造,例如:

new Foo() { a = 2, b = 3 }

再回應

這可能最難解決的問題 「爲什麼不」?在某些時候你決定,這是一個有點怪有一個「酒吧」有列表,讓你更改列表的簽名List<Foo> list;

public class Bar : Foo 
{ 
    public Bar(int a, int b) : Foo(a, b) {} 
} 

// ... 
List<Bar> list; 

// ... 
list.Add({1,2}); 

現在,你:嗯,我會考慮這個情況。您的代碼現在會中斷,因爲其他構造函數現在是「默認」。

+0

它爲什麼會壞?如果其他構造函數具有相同的參數,它不應該改變? – gartenriese

+0

如果Foo的構造函數需要被調用爲'Foo(b,a)',那麼您有錯誤。 – rene

+0

@rene:這不是答案寫的。 – gartenriese