如果我在using-block中使用对象初始值设定项,我会收到有关未正确处理对象的代码分析警告:
CA2000:Microsoft.Reliability:在方法'ReCaptcha.CreateReCaptcha(this HtmlHelper,string,string)'中,对象'<> g__initLocal0'未沿所有异常路径放置.在对对象'<> g__initLocal0'的所有引用都超出范围之前,调用System.IDisposable.Dispose.
这是代码:
using (var control = new ReCaptchaControl()
{
ID = id,
Theme = theme,
SkipRecaptcha = false
})
{
// Do something here
}
如果我不使用对象初始化器,代码分析很高兴:
using (var control = new ReCaptchaControl())
{
control.ID = id;
control.Theme = theme;
control.SkipRecaptcha = false;
// Do something here
}
这两个代码块有什么区别?我认为他们会导致相同的IL.或者这是代码分析引擎中的错误?