就地创建对象

时间:2016-03-03 14:04:30

标签: c#

我可以创建一个对象吗?我的意思是当我有下面的类,它带有两个参数

Foo

以及采用public void do(Foo foo) {} 对象

的以下方法
do({1,2});

然后我可以写这样的东西

do(new Foo(1,2));

而不是

report

如果Foo名字很长并被几个名称空间包围,这将特别有用。

2 个答案:

答案 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;。您的代码现在将中断,因为其他构造函数现在是“默认”。