C#中的using语句和指令有什么区别?

时间:2011-08-03 08:16:14

标签: c#

这基本上是一个教程问题,因为我是初学者我想在我们的C#代码开头使用的包含汇编和命名空间的using语句之间有什么区别

像这样:

using System.Web.Services;

当我们在方法或代码中写入代码时。 像这样:

using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))

是否存在差异或两者相同,任何指导都会有所帮助和赞赏。

5 个答案:

答案 0 :(得分:12)

first (Using Directive)是将命名空间纳入范围。

这是例如,所以你可以写

StringBuilder MyStringBuilder = new StringBuilder();

而不是

System.Text.StringBuilder MyStringBuilder = new System.Text.StringBuilder();

second (Using Statement)用于正确使用(创建和部署)实现IDisposable接口的对象。

例如:

using (Font font1 = new Font("Arial", 10.0f)) 
{
    byte charset = font1.GdiCharSet;
}

此处,Font类型实现了IDisposable,因为当我们不再使用Font实例时,unmanaged resources使用correctly disposed of需要{{3}} font1)。

答案 1 :(得分:2)

using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))

一旦控件离开using块,这个使用就会自动处理适配器对象。

这相当于通话

SqlDataAdapter adapter = new SqlDataAdapter(cmd)
adapter.dispose();

请参阅官方文档: http://msdn.microsoft.com/en-us/library/yh598w02(v=vs.71).aspx

答案 2 :(得分:0)

它们与你能得到的完全不同。

第一个显示了在命名空间内使用东西的意图。

第二个引用一次性物体并确保它被处置,无论发生什么(如实施尝试/最终)

答案 3 :(得分:0)

第一个允许您使用未在代码中定义的类型(告诉编译器在哪里可以找到它需要引用的代码。 参考:http://msdn.microsoft.com/en-us/library/sf0df423(v=VS.100).aspx

第二次使用确保在代码块结束时释放内存,或者在异常的情况下释放内存。 参考:http://msdn.microsoft.com/en-us/library/yh598w02.aspx

请参阅上面的链接,了解每个链接的详细文档。

答案 4 :(得分:0)

我确信有人会花大量时间来回答Google搜索的内容,但这里有几个链接可以帮助您入门。

using Statement (C# Reference)确保即使在对象上调用方法时发生异常,也会调用Dispose。

要允许在命名空间中使用类型,以便您不必使用using Directive (C# Reference)限定使用该命名空间中的类型。

您可能会发现MSDN是花一些时间浏览的绝佳资源。