gpt4 book ai didi

c# - 在构造函数中引用 "this"可以吗?

转载 作者:太空狗 更新时间:2023-10-29 21:06:51 24 4
gpt4 key购买 nike

在 C# 中,我使用的一个常见模式是使用表单对象填充较低计算类的详细信息。

MyForm 的构造函数是:

MyForm()
{
_MyFormCalcs = new MyFormCalcs(this);
}

但我今天遇到了一个错误,这让我认为由于我的构造函数尚未完成,它创建了一个新的 MyForm 实例以传递到 MyData。因此它调用构造函数两次。我发现 MyFormCalcs 中的静态列表被填充了两次,第二次失败了,因为键已经存在于列表中。

我可以在构造函数中使用 this 来引用这个实例吗?它在下层类中将包含什么 - 构造函数是否已运行。

将我的表单传递给低级类的更好方法是什么?

最佳答案

不,这不会创建 MyForm 的新实例。

一般来说,允许this 从构造函数中“转义”是dangerous因为这意味着它可以在构造函数完成之前使用,但它不会创建新实例。如果您能给出一个简短但完整的示例来说明您遇到的问题,我们可以帮助进一步诊断。特别是,不清楚“静态列表被填充两次”是什么意思。通常,在实例 构造函数中填充静态 变量不是一个好主意。

关于c# - 在构造函数中引用 "this"可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5087955/

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