![](/img/trans.png)
[英]Using ASP.Net, what would be the best control to use in this situation?
[英]Why would you use the using statement this way in ASP.NET?
再次重构一些代码。 在其中一个ASP.NET页面中看到其中一些内容:
using (TextBox txtBox = e.Row.Cells[1].FindControl("txtBox") as TextBox)
{
}
没有必要处理txtBox,因为它只是对现有控件的引用。 并且您根本不希望控制处置。 我甚至不确定这是不是有害的 - 就像它似乎要求不恰当地处理基础控制一样(尽管我还没有看到它以这种方式使用的任何不良影响)。
这是错的,它不应该像这样使用。 我会想象使用它的潜在问题不会立即出现。 在离开using语句时调用文本框dispose,但它不会立即被垃圾收集。 如果它被收集,那么当您尝试访问该控件时,您将遇到问题。
如果找不到, TextBox
实例可能为null,因此调用Dispose()将抛出NullReferenceException
。
我在实践中从未见过这种模式,但如果你需要使用它,那么值得处理任何潜在的错误。
应该没有负面的次要影响,但也没有必要。 如果我们在CLR中实现IDisposable的所有内容上using (x) { ... }
,那么大多数C#代码都是不可读的。
实际上,这里TextBox实例只能访问using语句括号内的上下文,这可能是使用它的主要原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.