[英]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.