在一行中分配一个首先调用方法的新对象

我有一些像这样的代码:

SomeObject someObject = new SomeObject(); someObject.Initialize(); this.Object = someObject; 

我会(宁可懒洋洋地)喜欢把它写成一行,也许是这样的:

 this.Object = new SomeObject() { Initialize(); }; 

目前这是否可能或计划用于C#6.0? 或者这只是一个非常糟糕和懒惰的想法?

它不是直接可能的,但你可以创建一个小帮手:

 public class Helper where T : new() { public static T Init(Action body) { T obj = new T(); body(obj); return obj; } } 

然后:

 this.Object = Helper.Init(obj => obj.Initialize()); 

或更复杂的情况:

 this.Object = Helper.Init(obj => { obj.Initialize(); obj.SomeOtherMethod(); ... }); 

你可以这样做:

 this.object = (new SomeOjbect()).Initialize(); 

但你必须通过添加“return this”来编辑initialize()方法

你可以尝试过,你会发现目前这是不可能的。 在我看来,这绝对不是必需的,会降低可读性。 你可以做很多其他的事情,比如把它放在你的构造函数中。

你不能这样说this.Object = new SomeObject().Initialize(); ,就像其中一个答案指定的那样,除非Initialize方法返回SomeObject。

正如我在评论中提到的,可以在类构造函数中使用方法:

 public class SomeObject { public SomeObject() { Initialize(); } public void Initialize() { //do initialization stuff } } 

但是,您不应该在构造函数中调用虚方法。

更多信息: http : //msdn.microsoft.com/en-us/library/ms229060.aspx