【发布时间】:2012-08-02 20:00:34
【问题描述】:
我在我们的一个应用程序中看到了以下代码:
public class First()
{
private Second _second;
public First()
{
_second = new Second(this);
// Doing some other initialization stuff,
}
}
public class Second
{
public Second(First f)
{
}
}
在First() 构造函数中,我们发送类First() 的引用在它完全构造之前不是很糟糕吗?我认为只有在控制逻辑离开构造函数后才完全构造对象。
或者这样可以吗?
【问题讨论】:
-
如果您可以保证在对象的构造函数完成之前不会访问对 first 的引用,那么就可以了。如果不能保证,那么您可能会在访问未完全初始化的内容时遇到问题。不推荐这种风格的代码。
-
我需要找到并简化我的生产 VB.NET 代码,它执行与此类似的操作,我们会收到一个编译器警告。在我找到它之前,我不记得它是直接警告还是代码分析警告。我尝试手动编码,但没有出现警告。
-
在 VS2008 中,我记得 Code Analysis warning CA2214 -- 不要在构造函数中调用可覆盖的方法 -- 这实际上是一个不同但相似的问题。
标签: c# reference constructor