1.using指令。using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到。
例如:using System;
using System.Data;
2.using语句,定义一个范围,在范围结束时处理对象。
场景:
当在某个代码段中使用了类的实例,而希望无论因为什么原因,只要离开了这个代码段就自动调用这个类实例的Dispose。
要达到这样的目的,用try...catch来捕捉异常也是可以的,但用using也很方便
比如,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using aClass = ConsoleApplication1.MyClass;
using bClass = ConsoleApplication2.MyClass;
namespace ConsoleApplication1
{
public
class MyClass
{
public
override
string ToString()
{
return "You are in ConsoleApplication1.MyClass";
}
}
class TestUsing
{
}
}
namespace ConsoleApplication2
{
class MyClass
{
public
override
string ToString()
{
return "You are in ConsoleApplication2.MyClass";
}
}
}
namespace TestUsing
{
using ConsoleApplication1;
using ConsoleApplication2;
class ClassTestUsing
{
static
void Main()
{
aClass my1 = new aClass();
Console.WriteLine(my1);
bClass my2 = new bClass();
Console.WriteLine(my2);
Console.WriteLine("ress any key");
Console.Read();
}
}
}
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)){
dt.Load(sdr); //此处用到sdr对象
} //此处释放sdr对象,并关闭connection对象连接
如
public
static DataTable GetTable(string sql, int executeTimeOut, string connStringName)
{
DataTable dtRet = new DataTable();
using (SqlConnection sc = new SqlConnection(connStringName))
{
using (SqlDataAdapter sqa = new SqlDataAdapter(sql, sc))
{
sqa.SelectCommand.CommandTimeout = executeTimeOut;
sqa.Fill(dtRet);
return dtRet;
}
}
}
在这段代码中,sdr对象包含在小括号中,说明当using下的这段代码不管是执行成功或失败,只要离开了这段代码,会自动调用sdr对象的Dispose方法。CommandBehavior.CloseConnection的作用是当command对象释放时,connection也跟着关闭。它跟下面这段代码效果是一致的:
Try
conn.Open()
Return cmd.ExecuteNonQuery()
cmd.Parameters.Clear()
Catch ex As Exception
Return False
Finally
'关闭数据库教程连接,销毁cmd对象
If Not IsNothing(conn) Then
conn.Close()
conn = Nothing
End If
If Not IsNothing(cmd) Then
cmd.Dispose()
cmd = Nothing
End If
End Try