【1】using想必大家都熟悉不过了,在每一个页面的开头就是使用using了,它是用来应用命名空间,类似于Java中的import的用法了。格式为using 命名空间名字。
【2】但是除了这个用法外,我们还有另一种也是常用的。使用using关键字来即时释放资源空间。在范围结束时马上处理对象。
换句话说,当在某一个代码中使用了类的实例,而希望无论因为什么原因,只要离开这段代码,就自动调用这个类实例的Dispose方法进行释放资源。
【实例】通常用于连接数据库。例如
using (SqlCommand command = new SqlCommand("INSERT INTO 员工表 " +//创建数据库命令对象
"VALUES (@员工编号, @员工姓名,@基本工资,@工作评价,@所属部门)", con.sqlConnection))
怎样就不用再次调用con.Close()来释放了,节省了代码量。
示例:using (Class1 cla1=new Class1(),Class2 cla2 =new Class2())
{
//使用对象cla1,cla2
//调用Dispose释放对象实例
}
---------------------------------华丽丽的分割线*************************************************
【实例1】
string connectionString = "data source=127.0.0.1;initial catalog=codematic;user id=sa;password=";
using (SqlConnection myConnection = new SqlConnection(connectionString))
{
SqlCommand cmd = myConnection.CreateCommand();
cmd.CommandText = "SELECT * FROM P_Product";
myConnection.Open();
using (SqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
Response.Write(dr.GetInt32(0).ToString() + ", " + dr.GetString(1) + "<br>");
}
}
//dr.Close();//有了using就不需要Close()啦啦
//myConnection.Close();
}
【实例2】
private void btnConnect_Click(object sender, EventArgs e)
{
if (cbxDatabase.Text.Trim()==""||cbxDatabase.Text=="请选择")
{
messageInfo.MessageInfo("请您选择相应的数据库");
messageInfo.ShowDialog();
}
connstr = "Data Source=" + txtServer.Text.Trim() + ";Initial Catalog=" + cbxDatabase.Text.Trim() + ";Persist Security Info=True;User ID=" + txtUser.Text.Trim() + ";Password=" + txtPassword.Text.Trim() + "";
using (SqlConnection conn = new SqlConnection(connstr))
{
string cmdText="select TABLE_NAME from INFORMATION_SCHEMA.TABLES";
using(SqlCommand cmd=new SqlCommand(cmdText,conn))
{
conn.Open();
using(SqlDataReader reader=cmd.ExecuteReader())
{
if (reader.HasRows)
{
while(reader.Read())
{
string tbName=reader.GetString(0);
listBox1.Items.Add(tbName);
}
}
}
}
}
}
【3】还有一种,方法是:using 别名 = 包括详细命名空间信息的具体的类型
假设一个cs文件中引用了两个不同的命名空间,但是两个命名空间都包括一同相同名字的类型。当需要用到这个类型的时候,每一个地方都要详细命名空间的办法来区分这些相同的名字类型。而用 别名 的方法就会简洁了,用到哪一个类就给哪一个类做别名声明就可以了。
【实例】在一个cs页面中有如下代码,引入两个命名空间:
using System;
using aClass=NameSpace1.MyClass;
using bClass=NameSpace2.MyClass;
nameSpace testUsing
{
class Program
{
static void Main(string[] args)
{
aClass my1=new aClass();
//等同于NameSpace1.MyClass my1=new NameSpace1.MyClass();
bClass my2=new bClass();
//等同于NameSpace1.MyClass my2=new NameSpace2.MyClass();
}
}
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
另个命名空间分别是:都是MyClass类型
(1)namespace NameSpace1
{
public class MyClass
{
//****
}
}
(2)namespace NameSpace2
{
public class MyClass
{
//****
}
}