可以创建对象吗?我的意思是,当我有下面的类,它有两个参数创建对象
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