这个操作符在小处非常有用
using
using 语句定义一个范围在此范围的末尾将处理对象
举例
class TestUsing:IDisposable
{
public void Dispose()
{
ConsoleWriteLine(Dispose);
}
public void Method()
{
ConsoleWriteLine(Do a method);
}
}
调用这个类
using(TestUsing tu=new TestUsing())
{
tuMethod();
}
可以看到先后输出了Do a method和Dispose
备注实例化的对象必须实现 SystemIDisposable 接口
as
as 运算符用于执行可兼容类型之间的转换
as 运算符类似于类型转换所不同的是当转换失败时as 运算符将产生空而不是引发异常在形式上这种形式的表达式
expression as type
等效于
expression is type ? (type)expression : (type)null 只是 expression 只被计算一次
请注意as 运算符只执行引用转换和装箱转换as 运算符无法执行其他转换如用户定义的转换这类转换应使用 cast 表达式来代替其执行
举例
object [] arr=new object[];
arr[]=;
arr[]=test;
foreach(object o in arr)
{
string s=(string)o;
ConsoleWriteLine(s);
}
这样的代码在转换类型失败的时候引发异常代码修改成
object [] arr=new object[];
arr[]=;
arr[]=test;
for(int i=;i<arrLength;i++)
{
string s=arr[i] as string;
if(s!=null)ConsoleWriteLine(i+:+s);
}
可以看到输出了:test虽然arr[]处转换失败但是没有引发异常而是返回了null
备注as必须和引用类型一起使用(int等值类型不能使用)