zoukankan      html  css  js  c++  java
  • 不要忽略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等值类型不能使用)


    原文:http://www.cnblogs.com/lovecherry/archive/2005/05/12/153965.html
  • 相关阅读:
    启动Nginx、查看nginx进程、nginx帮助命令、Nginx平滑重启、Nginx服务器的升级
    专为渗透测试人员设计的 Python 工具大合集
    如何为网站启用HTTPS加密传输协议
    正确设置nginx/php-fpm/apache权限 提高网站安全性 防止被挂木马
    java中十进制转换为任意进制
    多线程死锁的产生以及如何避免死锁
    Java Integer和String内存存储
    Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
    Jvm垃圾回收器详细
    分布式环境中的负载均衡策略
  • 原文地址:https://www.cnblogs.com/dagon007/p/156817.html
Copyright © 2011-2022 走看看