c# – 具有复杂逻辑的多个构造函数

c# – 具有复杂逻辑的多个构造函数,第1张

概述在C#中,如果你有多个构造函数,你可以这样做: public MyClass(Guid inputId, string inputName){ // do something}public MyClass(Guid inputId): this(inputId, "foo") {} 这个想法当然是代码重用.但是,当需要一些复杂的逻辑时,最好的方法是什么?说我想要这个构造函数: pub 在C#中,如果你有多个构造函数,你可以这样做:
public MyClass(GuID inputID,string inputname){    // do something}public MyClass(GuID inputID): this(inputID,"foo") {}

这个想法当然是代码重用.但是,当需要一些复杂的逻辑时,最好的方法是什么?说我想要这个构造函数:

public MyClass(MyOtherClass inputObject){    GuID inputID = inputObject.ID;    MyThirdClass mc = inputObject.CreateHelper();    string inputText = mc.Text;    mc.dispose();    // Need to call the main Constructor Now with inputID and inputText }

需要注意的是,我需要创建一个在使用后必须处理的对象. (澄清:不是立即,但我必须调用dispose()而不是等待垃圾收集)

但是,如果我在重载的构造函数中添加一些代码,我没有看到再次调用基础构造函数的方法.有没有办法从一个重载的内部调用基础构造函数?

或者是否可以使用

public MyClass(MyOtherClass inputObject): this(inputObject.ID,inputObject.CreateHelper().Text) {}

这会自动从CreateHelper()中释放生成的对象吗?

编辑:谢谢到目前为止.两个问题:我不控制MyOtherClass,我没有扩展方法(只有.NET 3.0 ……).我确实控制了自己的类,因为我刚刚开始编写它,如果有一个好的方法,我没有问题重构构造函数.

解决方法 用于解决此问题的最常见模式是使用构造函数调用的Initialize()方法,但在您刚刚给出的示例中,添加一个您调用的静态方法,就像下面的代码一样,可以解决这个问题.
public MyClass(MyOtherClass inputObject): this(inputObject.ID,GetHelperText(inputObject) {}private static string GetHelperText(MyOtherClass o){   using (var helper = o.CreateHelper())      return helper.Text;}
总结

以上是内存溢出为你收集整理的c# – 具有复杂逻辑的多个构造函数全部内容,希望文章能够帮你解决c# – 具有复杂逻辑的多个构造函数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1240988.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存