18
。 CreateReCaptcha(this HtmlHelper,string,string)',對象'<> g__initLocal0'不會沿着所有異常路徑處理。調用System.IDisposable.Dispose對象'<> g__initLocal0'之前,所有對它的引用超出範圍。對象初始如果我使用對象初始使用塊,我得到代碼分析警告有關不正確處理的對象生成代碼分析警告CA2000
下面是代碼:
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。或者這是代碼分析引擎中的一個錯誤?
現在你寫出來了。海事組織這是一個容易被忽視的陷阱。幸運的是Visual Studio比我更聰明。 – Tero 2010-08-18 17:57:38
@Jon - 因此,推斷'不要使用對象初始值設定項語法和一個也實現IDisposable的類型'是正確的。 (由於擴展不在我們的控制範圍內,因此無法解決由CA引擎標記的問題。) – Gishu 2014-01-21 12:15:25
@Gishu:如果您擔心屬性設置者可能會拋出異常,那麼是的。 – 2014-01-21 13:34:16