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

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

谢谢

两个用途:

  • 使用指令 ,例如

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

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

  • 使用语句例如

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

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

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

  • 用于IDisposable意味着当使用块结束时将调用Dispose方法。
  • using for 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); } 

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

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

相当于:

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

关键字有两种用途。

一种是当你懒得键入System.Web.UI.WebControls.TextBoxusing System.Web.UI.WebControls代码文件顶部的System.Web.UI.WebControls.TextBox添加,然后只需编写TextBox 。 这就是它所做的 – 缩短你必须编写的代码(并使其更容易阅读)。

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

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

相当于:

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

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

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

有三种用途:

  • 作为导入名称空间和别名类型的指令(两种用途)
  • 作为在范围末尾处理IDisposable对象的声明

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

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

例如,

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

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

有关更多详细信息,请参阅使用Statement(C#) 。

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

‘using’关键字有两种用途:

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

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

看到:
using声明
using指令

C#中using关键字有两种不同的用法:

  1. 声明隐式包范围,例如“using System;”
  2. 使IDisposable对象的Dispose()方法被调用。

在后一种情况下, using(myVar) {}是简写:

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

使用可以用于:

  • “import”命名空间,即使用它们
  • 为类型创建别名(比如c ++天中的typedef
  • 在使用后立即处理一个物体

using关键字可用于将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()); } } 

凉…!