我可以创建一个对象吗?我的意思是当我有下面的类,它带有两个参数
Foo
以及采用public void do(Foo foo) {}
对象
do({1,2});
然后我可以写这样的东西
do(new Foo(1,2));
而不是
report
如果Foo名字很长并被几个名称空间包围,这将特别有用。
答案 0 :(得分:1)
不,这是不可能的。 但是,如果问题是长名称,您可以尝试使用别名指令。
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
答案 1 :(得分:0)
简短回答
不,你不能。只有属性/字段初始化的构造,例如:
new Foo() { a = 2, b = 3 }
。
更长的答案
它可以提出“为什么不”的问题?好吧,我会考虑这种情况:
public class Bar : Foo
{
public Bar(int a, int b) : Foo(a, b) {}
}
// ...
List<Bar> list;
// ...
list.Add({1,2});
现在,您在某个时候决定在列表中有一个“Bar”有点奇怪,因此您将列表的签名更改为List<Foo> list;
。您的代码现在将中断,因为其他构造函数现在是“默认”。