gpt4 book ai didi

C# 从对象中更改 'this'

转载 作者:行者123 更新时间:2023-11-30 14:46:22 24 4
gpt4 key购买 nike

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

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

我有一个名为 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() 被很多地方调用,所以我真的不想在检测到大变化时退出并在“外部”创建新对象,如果你明白我的意思的话.

那么如果你不能设置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);

关于C# 从对象中更改 'this',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49228861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com