using 关键字常见的有三种用途;
1.导入命名空间,以便在命名空间中使用类型而不必指定命名空间。 (最简单,最常见)
如:using System;
一般来说,导入的命名空间应该在本工程内,或者引用了该命名空间的包。
2.创建using 别名,以便更易于将标识符限定到命名空间或类型。 (不常用)
如:using print = System.Console;
这样如果我们想输出东西到控制台的话,可以直接写成:print.WriteLine("HELLO");
不定义别名的写法是:Console.WriteLine("HELLO");
其实两者差不多,呵呵,例子比较简单,这种写法不是很常见。
注意:
1)别名(本例中位print)后面可以是命名空间,也可以是命名空间下的对象。
2)创建using别名的语句必须写在引用类的外部。
3. using 语句,定义一个范围,将在此范围之外释放一个或多个对象。 (常用)
一般来说,CLR会自动在对象不被引用后执行垃圾回收,释放资源。但是,这样回收具有不确定性,有些时候,我们希望执行完以后马上就把资源回收,而不是等CLR来做。比如在网络连接,文件句柄等资源有限的情况下,这时候就可以用using 语句了。
比如:
using (TransactionScope tran = new TransactionScope()){}
此语句相当于一个try/finally语句,在try里面执行完(不管是否抛异常),都会执行一些操作。
注意:
1)为 using 语句提供的对象必须实现 IDisposable 接口。此接口提供了 Dispose 方法,该方法将释放此对象的资源。
测试代码:
代码
class Program
{
static void Main(string[] args)
{
using (LimitedResource lr = new LimitedResource())
{
lr.Print();
}
Console.ReadLine();
}
}
/// <summary>
/// 测试类
/// </summary>
class LimitedResource : IDisposable
{
public void Print()
{
Console.WriteLine("Using limited resource...");
}
/// <summary>
/// 此方法关闭或释放由实现此接口的类的实例保持的文件、流和句柄等非托管资源
{
static void Main(string[] args)
{
using (LimitedResource lr = new LimitedResource())
{
lr.Print();
}
Console.ReadLine();
}
}
/// <summary>
/// 测试类
/// </summary>
class LimitedResource : IDisposable
{
public void Print()
{
Console.WriteLine("Using limited resource...");
}
/// <summary>
/// 此方法关闭或释放由实现此接口的类的实例保持的文件、流和句柄等非托管资源
/// </summary>
public void Dispose()
{
Console.WriteLine("Disposing limited resource...");
}
}
public void Dispose()
{
Console.WriteLine("Disposing limited resource...");
}
}