在c#中使用"using"关键字

Nar*_*uto 13 .net c# asp.net

我想知道c#中"使用"关键字的用途是什么,我是新手..当我们需要使用"使用"关键字时...我用谷歌搜索它,不能满足于答案.我还想知道更多来自你的Geeks ..

谢谢

Jon*_*eet 25

两个用途:

  • 使用指令,例如

    using System;
    using System.IO;
    using WinForms = global::System.Windows.Forms;
    using WinButton = WinForms::Button;
    
    Run Code Online (Sandbox Code Playgroud)

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

  • 使用语句例如

    using (Stream input = File.OpenRead(filename))
    {
        ...
    }
    
    Run Code Online (Sandbox Code Playgroud)

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

  • @GrabIt,因为Jon只说那些实现IDisposable的人. (3认同)

Eli*_*sha 11

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

  • 使用用于IDisposable的意味着当使用末端的块Dispose方法将被调用.
  • using for namespace意味着导入的命名空间中的类型将在代码中引用.

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

"虚拟"一次性类:

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

    public void Dispose()
    {
        WasDisposed = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

    Assert.IsTrue(DisposableClass.WasDisposed);
}
Run Code Online (Sandbox Code Playgroud)


Adr*_*scu 7

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

using(MyType obj = new MyType())
{
  ... do stuff.
}
Run Code Online (Sandbox Code Playgroud)

相当于:

MyType obj = new MyType();
try
{
  .... do stuff
}
finally
{
  if(obj != null)
  {
      obj.Dispose();
  }
}
Run Code Online (Sandbox Code Playgroud)