C# using的三种用法
2020-12-27 18:29
一、using指令
在文件顶部引用命名空间,如:using System;
二、using别名
为命名空间或类型定义别名,这种做法有个好处就是当同一个cs文件引用了两个不同的命名空间,但是两个命名空间都包括了一个相同名字的类型的时候,就会为此类型命名空间创建别名。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; //为命名空间定义别名 "ElseName" using ElseName = This.Is.Very.Very.Long.NamespaceName; //为类定义定义别名 using ElseCName = This.Is.Very.Very.Long.NamespaceName.ThisIsVeryVeryLongClassName; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //通过别名实例化对象 ::是命名空间别名的修饰符 ElseName::NamespaceExample NSEx = new ElseName::NamespaceExample(); //通过别名实例化对象 ElseCName CN = new ElseCName(); Response.Write("命名空间:" + NSEx.GetNamespace() + ";类名:" + CN.GetClassName()); } } namespace This.Is.Very.Very.Long.NamespaceName { class NamespaceExample { public string GetNamespace() { return this.GetType().Namespace; } } class ThisIsVeryVeryLongClassName { public string GetClassName() { return System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName; } } }
三.using语句
定义一个范围,在范围结束时处理对象。using语句提供了一个脉络清晰的机制来控制资源的生存期,创建的对象会在using语句结束时被摧毁,使用前提该对象必须继承了IDisposable接口。某些类型的非托管对象有数量限制或很耗费系统资源,在代码使用完它们后,尽可能快的释放它们时非常重要的。using语句有助于简化该过程并确保这些资源被适当的处置(dispose)。
它有两种使用形式。
1.using (ResourceType Identifier = Expression ) Statement
圆括号中的代码分配资源,Statement是使用资源的代码
using语句会隐式产生处置该资源的代码,其步骤为:
a:分配资源
b:把Statement放进tyr块
c:创建资源的Dispose方法的调用,并把它放进finally块,例如:
using System; using System.IO; namespace @using { class Program { static void Main(string[] args) { using (TextWriter tw = File.CreateText("test.txt")) { tw.Write("this is a test"); } using (TextReader tr = File.OpenText("test.txt")) { string input; while ((input = tr.ReadLine()) != null) { Console.WriteLine(input); } } Console.ReadKey(); } } }
输出:this is a test
2.using (Expression) Statement
Expression 表示资源,Statement是使用资源,资源需要在using之前声明
TextWriter tw = File.CreateText("test.txt"); using(tw){......}
这种方式虽然可以确保对资源使用结束后调用Dispose方法,但不能防止在using语句已经释放了他的非托管资源之后使用该资源,可能导致不一致的状态,不推荐使用。
上一篇:c#中内置委托