2016-03-03 163 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