using 的几种用法
1、using指令。即导入命名空间。
using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到。
例如:using System; 一般都会出现在*.cs中。
2、using别名。using + 别名 = 包括详细命名空间信息的具体的类型。
这种做法有个好处就是当同一个cs引用了两个不同的命名空间,但两个命名空间都包括了一个相同名字的类型的时候。当需要用到这个类型的时候,就每个地方都要用详细命名空间的办法来区分这些相同名字的类型。而用别名的方法会更简洁,用到哪个类就给哪个类做别名声明就可以了。注意:并不是说两个名字重复,给其中一个用了别名,另外一个就不需要用别名了,如果两个都要使用,则两个都需要用using来定义别名的。
例子:
using System;
using aClass = NameSpace1.MyClass;
using bClass = NameSpace2.MyClass;
namespace NameSpace1
{
public class MyClass
{
public override string ToString()
{
return "You are in NameSpace1.MyClass";
}
}
}
namespace NameSpace2
{
class MyClass
{
public override string ToString()
{
return "You are in NameSpace2.MyClass";
}
}
}
3、using 语句 定义一个范围,在范围结束时处理对象
场景:
当在某个代码段中使用了类的实例,而希望无论因为什么原因,只要离开了这个代码段就自动调用这个类实例的Dispose。
要达到这样的目的,用try...catch来捕捉异常也是可以的,但用using也很方便。
好处是:1、节约内存资源,using只作用{}括号里面的,出现括号里的con对象就释放掉了,这是微软推出的写法;
2、允许在命名空间中使用类型,以便您不必限定在该命名空间中使用的类型
例子:
using(SqlConnection con=new SqlConnection())
{
...
}
在上面代码中,using语句的一开始定义了一个SqlConnection的对象,之后在整个语句块中都可以使用con,在using语句块结束的时候,con的Dispose方法将会被自动调用。using语句不仅免除了程序员输入Dispose调用的代码,它还提供了机制保证Dispose方法被调用,无论using语句块顺利执行结束,还是抛出了一个异常。代码都会演示using的这一保护机制。
也就是说:using语句为实现了IDisposable的类型对象调用Dipose方法,using语句能够保证使用的对象的Dispose方法在using语句块结束时被调用,无论是否有异常被抛出。C#编译器在编译时自动为using语句加上try/finally块,所以using的本质和异常捕捉语句一样,但语法更为简洁。所有using使用的对象都应该在using语句开始后再初始化,以保证所有的对象能够被Dispose。
using 语句块也可以这么说可以分获取、使用和释放三个部分。
1.获取表示创建变量并将其初始化,以便引用系统资源。在using()中
2.使用表示访问资源并使用资源执行操作。using{}之间的语句代表资源的使用过程。
3.释放表示针对resourcename中的对象调用Dispose方法。这使该对象可以完全终止其非托管资源“}”块释放“{”块控制的资源。