为什么要在ASP.NET中以这种方式使用using语句?

Cad*_*oux 14 c# asp.net using-statement

再次重构一些代码.在其中一个ASP.NET页面中看到其中一些内容:

using (TextBox txtBox = e.Row.Cells[1].FindControl("txtBox") as TextBox)
{
}
Run Code Online (Sandbox Code Playgroud)

没有必要处理txtBox,因为它只是对现有控件的引用.并且您根本不希望控制处置.我甚至不确定这是不是有害的 - 就像它似乎要求不恰当地处理基础控制一样(尽管我还没有看到它以这种方式使用的任何不良影响).

Fré*_*idi 7

TextBox继承了其实施的IDisposable组件父.该实现将组件从其站点容器中删除(如果有).

因此,如果文本框实际驻留在站点容器中,那么这样做可能会产生恶意影响.此外,在调用Dispose()一个对象后,你不应该再使用它,无论它是什么(它不再处于可用状态).

我建议你使用ASP.NET Web控件来避免这种模式.