繁体   English   中英

C# 从对象内更改“this”

[英]C# Change 'this' from within object

这可能是一种糟糕的做事方式,但无论如何......

我想从对象本身重新初始化一个对象。

我有一个名为Quote的对象,其中一种方法是Calculate() ,它做了很多事情。 一件事是,如果某些主要属性发生了变化,我们称之为大变化,我们需要创建一个新的报价(不仅仅是更新现有的)。

Calculate()中间,这样做真的很容易(IMO):

public class Quote {
    public bool Calculate() {

        //... do lots of things

        if(IsBigChange) {
            this = new Quote();
        }

        //... do more things
        // later when it is saved it will be a new quote

    }
}

Calculate()是从很多地方调用的,所以我真的不想在检测到 Big Change 时退出并在“外部”创建新对象,如果你知道我的意思的话。

所以如果你不能设置this ,有没有另一种方法可以达到同样的结果?

不,你不能改变this 伙计,那会令人困惑。

话虽如此,您可以从静态方法中设置this (某种程度),该方法没有this开始。 您只需创建一个新对象并返回它。 这是一种非常传统的方法。 例子:

class Quote
{
    static public Quote Calculate(int inputData)
    {
        var foo = DoComputations(inputData);
        return new Quote(foo);
    }

    public Quote(Foo foo)
    {
        //Initialize member variables based on the output of the calculations (a.k.a. foo)
    }
}

然后不要像这样调用它:

var q = new Quote();
q.Calculate(data);

你会这样做:

var q = Quote.Calculate(data);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM