在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.TextBox
, using 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 语句 ,仅适用于从
IDisposable
inheritance的类型。 这在using语句超出范围后自动调用对象上的Dispose()
方法,因此您不必担心自己自动调用此方法,或者在数据库连接上调用Close()
,例如:使用(MySqlConnection connection = new MySqlConnection()){// ..}
看到:
using
声明
using
指令
C#中using关键字有两种不同的用法:
- 声明隐式包范围,例如“using System;”
- 使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()); } }
凉…!