Csharp/C#教程:在一行中分配一个首先调用方法的新对象分享


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

我有一些像这样的代码:

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

上述就是C#学习教程:在一行中分配一个首先调用方法的新对象分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1042133.html

(0)
上一篇 2022年1月29日
下一篇 2022年1月29日

精彩推荐