可以創建對象嗎?我的意思是,當我有下面的類,它有兩個參數創建對象
class Foo {
public Foo(int x, int y) {}
}
和下面的方法,這需要Foo
對象
public void do(Foo foo) {}
可我當時寫這樣的事情
do({1,2});
而不是此
do(new Foo(1,2));
如果Foo有一個非常長的名字並被幾個命名空間包圍,這將會特別有用。
可以創建對象嗎?我的意思是,當我有下面的類,它有兩個參數創建對象
class Foo {
public Foo(int x, int y) {}
}
和下面的方法,這需要Foo
對象
public void do(Foo foo) {}
可我當時寫這樣的事情
do({1,2});
而不是此
do(new Foo(1,2));
如果Foo有一個非常長的名字並被幾個命名空間包圍,這將會特別有用。
簡短的回答
你就是不行。只有屬性/字段初始化的構造,例如:
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});
現在,你:嗯,我會考慮這個情況。您的代碼現在會中斷,因爲其他構造函數現在是「默認」。
它爲什麼會壞?如果其他構造函數具有相同的參數,它不應該改變? – gartenriese
如果Foo的構造函數需要被調用爲'Foo(b,a)',那麼您有錯誤。 – rene
@rene:這不是答案寫的。 – gartenriese
不,這是不可能的。 但是,如果問題是長名稱,你可以嘗試使用別名指令。
using F = A.Very.Long.Namespace.and.classname.FooBarThing;
// ...
List<Bar> list;
// ...
list.Add(new F(1,2));
看到https://msdn.microsoft.com/en-us/library/aa664765(v=vs.71).aspx
「*可我然後寫這樣的事*」 - 不,你不能。在C#中沒有用於創建對象的「簡短」。 –
也許如果你正在重新編碼.net C#編譯器,你可以;-) – brothers28
@AndyKorneyev:謝謝,這是一個恥辱。我來自C++的背景,這就是爲什麼我問。 – gartenriese