首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > VB.NET > (论坛答疑点滴)不要忽略c#中的using和as操作符
【标  题】:(论坛答疑点滴)不要忽略c#中的using和as操作符
【关键字】:c#,using,as
【来  源】:http://lovecherry.cnblogs.com/archive/2005/05/12/153965.html

(论坛答疑点滴)不要忽略c#中的using和as操作符

是不是很多人不用c#中的using和as操作符?甚至不知道?
其实这2个操作符在小处非常有用。

1、using
按照msdn的解释  

using 语句定义一个范围,在此范围的末尾将处理对象。

举例:

class TestUsing:IDisposable
    
{
        
public void Dispose() 
        
{
            Console.WriteLine(
"Dispose"); 
        }


        
public void Method()
        
{
            Console.WriteLine(
"Do a method");
        }

    }

调用这个类:

using(TestUsing tu=new TestUsing())
            
{
                tu.Method();
            }

可以看到先后输出了Do a method和Dispose。
备注:实例化的对象必须实现 System.IDisposable 接口

2、as
msdn这么说:

as 运算符用于执行可兼容类型之间的转换。
as 运算符类似于类型转换,所不同的是,当转换失败时,as 运算符将产生空,而不是引发异常。在形式上,这种形式的表达式:

expression 
as type
等效于:

expression 
is type ? (type)expression : (type)null
只是 expression 只被计算一次。

请注意,
as 运算符只执行引用转换和装箱转换。as 运算符无法执行其他转换,如用户定义的转换,这类转换应使用 cast 表达式来代替其执行。


举例:
object [] arr=new object[2];
            arr[
0]=123;
            arr[
1]="test";
            
foreach(object o in arr)
            
{
                
string s=(string)o;
                Console.WriteLine(s);
            }

这样的代码在转换类型失败的时候引发异常,代码修改成:
object [] arr=new object[2];
            arr[
0]=123;
            arr[
1]="test";
            
for(int i=0;i<arr.Length;i++)
            
{
                
string s=arr[i] as string;
                
if(s!=null)Console.WriteLine(i+":"+s);
            }
可以看到输出了1:test,虽然arr[0]处转换失败但是没有引发异常而是返回了null

备注:as必须和引用类型一起使用(int等值类型不能使用)
(原创)方便的使用单击和双击更新DataGrid中的数据的例子:【上一篇】
(论坛答疑点滴)小处见大问题:【下一篇】
【相关文章】
  • 最近用到的觉得比较不错的几个tips-(1)asp。net操作ftp,上传和下载 (2) 长时间提交,在提交后禁止页面...
  • asp.net中操作ftp的方法
  • ASP.NET 2.0 新特性
  • asp.net 2.0-实现数据访问(1)
  • Make your java server faster
  • MTASC
  • My currently using blog
  • Web自定义控件FlashLabel
  • ASP输出WOrd、Excel文件!
  • 使用.NET Reflector插件FileDisassembler还原源码!
  • 【随机文章】
  • 电脑死机怪现象,显卡,cpu风扇等造成的
  • 接口关闭范例
  • 在C++创建tcl,tk解释器的过程
  • Windows XP SP2"安全中心"面面观
  • informix7.X安装指南
  • JAVA常见中文问题的解决方案
  • step by step 构建嵌入式Linux系统平台
  • 用 curl 和 scsh 编写 web 脚本
  • WinFS 101:新型 Windows 文件系统简介
  • 堆(heap)和堆栈(stack)的区别
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.