在c#中使用“using”关键字

时间:2009-11-20 09:34:26

标签: c# .net asp.net

我想知道在c#中使用“using”关键字有什么用,我是新手... 当我们需要使用“使用”关键字时..我google了它,不能满意答案。我还想知道更多来自你的Geeks ..

由于

14 个答案:

答案 0 :(得分:25)

两种用途:

  • 使用指令,例如

    using System;
    using System.IO;
    using WinForms = global::System.Windows.Forms;
    using WinButton = WinForms::Button;
    

    这些用于导入名称空间(或为名称空间或类型创建别名)。在任何声明之前,它们位于文件的顶部。

  • 使用语句,例如

    using (Stream input = File.OpenRead(filename))
    {
        ...
    }
    

    这只能用于实现IDisposable的类型,并且是在finally块中调用Dispose的try / finally块的语法糖。这用于简化资源管理。

答案 1 :(得分:11)

使用在C#中有两个含义:

  • IDisposable使用表示将调用使用结束Dispose方法的块。
  • 使用 namespace 意味着导入的命名空间中的类型将在代码中引用。

使用块的工作原理的基本示例:

“虚拟”一次性课程:

public class DisposableClass : IDisposable
{
    public static bool WasDisposed { get; private set;}

    public void Dispose()
    {
        WasDisposed = true;
    }
}

一些非常简单的代码,用于演示何时调用Dispose:

[Test]
public void DisposeSample()
{
    using (var disposableClass = new DisposableClass())
    {
        Assert.IsFalse(DisposableClass.WasDisposed);
    }

    Assert.IsTrue(DisposableClass.WasDisposed);
}

答案 2 :(得分:7)

我假设你在谈论使用控制块而不是using [namespace]语句。基本上,关键字是用于安全地初始化和处理对象的语法糖。它适用于任何实现IDisposable的对象。 以下内容:

using(MyType obj = new MyType())
{
  ... do stuff.
}

相当于:

MyType obj = new MyType();
try
{
  .... do stuff
}
finally
{
  if(obj != null)
  {
      obj.Dispose();
  }
}

答案 3 :(得分:4)

关键字有两种用途。

其中一个是当你懒得输入System.Web.UI.WebControls.TextBox时,你会在代码文件的顶部添加using System.Web.UI.WebControls,然后再写TextBox。这就是它所做的一切 - 缩短你必须编写的代码(并使其更容易阅读)。

另一个与IDisposable接口有关。此界面适用于在使用完毕后需要清理的对象。喜欢文件,需要关闭,或数据库连接,或那种东西。您可以在需要的地方自行调用Dispose()方法,但这样可以更轻松。简而言之,这个:

using (var X = new MyObject())
{
    // Code goes here
}

相当于:

var X = new MyObject();
try
{
    // Code goes here   
}
finally
{
    if ( X != null )
        X.Dispose();
}

再次 - 它是一段代码的简写,它确保无论发生什么,都会调用Dispose()方法。即使您的代码抛出异常,或者您从方法中return,也会调用Dispose()方法。这可以确保您不会意外地将文件保持打开状态。

通常,如果您使用实现IDisposable接口的对象,请将其放在using块中。

答案 4 :(得分:3)

有三种用途:

我不相信我能比一般条款的MSDN文章更清楚地解释。如果您无法理解它们,最好发布一个关于您不理解的详细信息的更具体的问题。

答案 5 :(得分:3)

“using”关键字也可用于制作类型别名。这里Item是Dictionary的别名。 这种方法可以节省一些输入:)

例如,

using Item = System.Collections.Generic.Dictionary<string, string>;
namespace Sample
{
    using Records = Dictionary<int, Item>;
    public class Controller
    {
      Records recordDictionary = new Records();
    }
}

答案 6 :(得分:2)

非常确定在某个地方会有这个副本....但是,简而言之,using关键字用于指定您正在创建的对象的范围。一旦物体离开使用块就被丢弃,即自动调用Dispose。

有关详细信息,请参阅using Statement (C#)

答案 7 :(得分:2)

完成后,它为您提供了一种简单的方法来清理资源。使用使用构造,一旦您完成使用资源,它们就会自动释放。它甚至可以在异常的情况下清理资源。

答案 8 :(得分:1)

答案 9 :(得分:1)

'using'关键字有两种用途:

  • 作为using 指令,允许在命名空间中使用类型。例如:using System.Web
  • 作为using 语句,仅适用于从IDisposable继承的类型。这在using语句超出范围后自动调用对象上的Dispose()方法,因此您不必担心自己自动调用此方法,或者在数据库连接上调用Close(),例如:

    使用(MySqlConnection connection = new MySqlConnection()) {   // .. }

答案 10 :(得分:0)

答案 11 :(得分:0)

C#中使用关键字有两种不同的用途:

  1. 声明隐式包范围,例如“using System;”
  2. 使IDisposable对象的Dispose()方法被调用。
  3. 在后一种情况下,using(myVar) {}是:

    的简写
    IDisposable disposable = (IDisposable)myVar;
    try
    {
       // your code here
    }
    finally
    {
       if (disposable != null)
          disposable.Dispose();
    }
    

答案 12 :(得分:0)

使用可以用于:

  • “导入”命名空间,即使用他们
  • 为类型创建别名(比如c ++时代的typedef
  • 在使用后立即处理对象

答案 13 :(得分:0)

using keyword可用于将namspace或库导入(关联)我们的程序。因此我们可以使用我们程序中的库中可用的函数。它有点像参考

例如:使用System.IO

这意味着我们将使用该库中的一些函数

您可以编写自己的库并使用using语句导入它。 例如:

namespace MyProject.MyNamspace
{
 public class MyCustomClass
 {
  public static string MyFunctionToSmile()
  {
   return "He he he heeee";
  }   
}

}

并在你的c#页面中,使用此

using MyProject.MyNamspace

public class MyClass
{
 protected void Page_Load(object sender, EventArgs e)
 {
  Response.Write(MyCustomClass.MyFunctionToSmile());
 } 
}

酷...!