为什么要使用using语句初始化对话框?

时间:2011-04-01 19:32:42

标签: c# coding-style idisposable

我正在调整此来源的编码风格指南: http://www.csharpfriends.com/articles/getarticle.aspx?articleid=336

在“5.2初始化”下,建议如下:

  

如果初始化对话框,请尝试使用   使用声明:

     

使用(OpenFileDialog openFileDialog =   新的OpenFileDialog()){}

这种风格选择的原因是什么?

7 个答案:

答案 0 :(得分:4)

您可能只需要短期对话即可立即输入。因此,使用using语句,您可以在完成所需资源(释放它)后释放资源。

Using只是在使用后调用dispose方法的语法糖。

答案 1 :(得分:3)

OpenFileDialog实现了IDisposable接口。鉴于对话通常具有特定方法的生命周期,using块确保它们将被正确处理

using (OpenFileDialog dialog = new OpenFileDialog()) {
  // Some setup work 
  ...
  return dialog.ShowDialog();
}

答案 2 :(得分:3)

这不是最好的例子,OpenFileDialog在对话框关闭时已经处理了所有资源。它是一个组件,而不是一个控件。这是一个实现细节。通常,调用ShowDialog()会自动处理表单对象。与Show()不同。这是必要的,以便您可以检索对话框结果而不必担心ObjectDisposedException。现在重要的是你在这样做之后自己处理它。

使用语句变得容易。

答案 3 :(得分:1)

你会这样做是出于同样的原因,你使用任何using构造来确保对象被处置。 OpenFileDialog实现了IDisposable,因此由消费者决定是否放置实例并且using构造确保在对象上调用.Dispose。

答案 4 :(得分:0)

  

c#语言中的using语句   允许我们定义一个范围   物体寿命。这个说法   获取指定的资源,   最后执行语句   调用的Dispose()方法   要清理它。

答案 5 :(得分:0)

using

的定义

using定义一个范围,在该范围之外将放置一个或多个对象。

我猜这个定义告诉所有事情。

要获得更好的理解,请阅读msdn上的using Statement

what-is-the-c-using-block-and-why-should-i-use-it

Get More Info

答案 6 :(得分:0)

其他答案中未提及的一个关键点是所有对话框始终是模态的,这意味着与您可能显示的常规表单不同,模式对话框将阻止执行,直到表单消失。这意味着在显示对话框后执行返回给你的时候,对话框已经消失了!因此,现在已经是处理它的时候了,这就是为什么建议你使用usings语句。