我正在编写一些代码,但被告知我存在潜在的错误。我们的架构师解释了为什么,但我仍然看不到。在我看来,即使在他纠正之后,它也正在做同样的工作。任何人都可以向我解释本来的错是什么?
根据我们的架构师,它的外观如何:
private IIzuProxyService _izuProxyService = null;
private IIzuProxyService IzuProxyService
{
get
{
if (_izuProxyService == null)
_izuProxyService = new IzuProxyService();
return _izuProxyService;
}
}
它的原始外观:
private IIzuProxyService _izuProxyService = null;
private IIzuProxyService IzuProxyService
{
get
{
if (_izuProxyService == null)
return new IzuProxyService();
return _izuProxyService;
}
}
非常感谢!
答案 0 :(得分:0)
您的代码永远不会分配给_izuProxyService
字段。
这意味着只要访问IzuProxyService
属性,_izuProxyService
总是 null
。因此它将总是实例化一个新实例。
答案 1 :(得分:0)
永远不会为本地字段分配值,因为属性getter每次都会返回一个新实例而不会为本地字段分配值,因此该字段将保持为空。
一种解决方法是使用Lazy<T>
来管理所需字段的延迟加载。
提供对延迟初始化的支持。
Lazy<T>
if (_izuProxyService == null)
_izuProxyService = new IzuProxyService();
return _izuProxyService;
替换
{{1}}