• (论坛答疑点滴)不要忽略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等值类型不能使用)
    欢迎大家阅读我的极客时间专栏《Java业务开发常见错误100例》【全面避坑+最佳实践=健壮代码】
  • 相关阅读:
    < java.util >-- Set接口
    Codeforces 627 A. XOR Equation (数学)
    Codeforces 161 B. Discounts (贪心)
    Codeforces 161 D. Distance in Tree (树dp)
    HDU 5534 Partial Tree (完全背包变形)
    HDU 5927 Auxiliary Set (dfs)
    Codeforces 27E. Number With The Given Amount Of Divisors (暴力)
    lght oj 1257
    Codeforces 219D. Choosing Capital for Treeland (树dp)
    Codeforces 479E. Riding in a Lift (dp + 前缀和优化)
  • 原文地址:https://www.cnblogs.com/lovecherry/p/153965.html
Copyright © 2020-2023  润新知