using的多重身份都体现在下面三个方面:
1、引入命名空间
2、创建别名
3、强制资源清理
(1)引用命名空间
using作为引入命名空间指令的用法规则为:
using Namespace;
在.NET程序中,最常见的代码莫过于在程序文件的开头引入System命名空间,其原因在于System命名空间中封装了很多最基本最常用的操作。
(2)创建命名空间别名
当同一个cs引用了不同的命名空间,但这些命名控件都包括了一个相同名字的类型的时候,可以使用C# using关键字来创建别名,这样会使代码更简洁。注意:并不是说两个名字重复,给其中一个用了别名,另外一个就不需要用别名了,如果两个都要使用,则两个都需要用using来定义别名的。
(3)强制资源清理
用途:清理非托管资源,不受GC控制的资源。Using结束后会隐式的调用Disposable方法。(不过该对象必须实现IDisposable接口)。
例如:
using (SqlConnection cn = new SqlConnection(SqlConnectionString)){}//数据库连接
using (SqlDataReader dr = db.GetDataReader(sql)){}//DataReader
//这里SqlConnection和SqlDataReader对象都默认实现了IDisposable接口,如果是自己写的类,那就要自己手动来实现IDisposable接口。比如:
using (Employee emp = new Employee(userCode))
{
}
//Emlpoyee.cs类:
public class Employee:IDisposable
{
//实现IDisposable接口#region 实现IDisposable接口
/** <summary>
/// 通过实现IDisposable接口释放资源
/// </summary>
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
/** <summary>
/// 释放资源实现
/// </summary>
/// <param name="disposing"></param>
protected virtual void Dispose(bool disposing)
{
if (!m_disposed)
{
if (disposing)
{
// Release managed resources
if(db!=null)
this.db.Dispose();
if(dt!=null)
this.dt.Dispose();
this._CurrentPosition = null;
this._Department = null;
this._EmployeeCode = null;
}
// Release unmanaged resources
m_disposed = true;
}
}
/** <summary>
/// 析构函数
/// </summary>
~Employee()
{
Dispose(false);
}
private bool m_disposed;
#endregion
}
参考资料: C# using关键字的用法 http://www.studyofnet.com/news/54.html