• 不要忽略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
  • 相关阅读:
    IntelliJ IDEA自动补全变量名称和属性名称的快捷键
    Redis客户端 Spring Data Redis(未完)
    用画小狗的方法来解释Java中的值传递
    Java -- Arrays.asList()方法
    有趣的IntegerCache
    字符串使用点滴
    字符串拼接+和concat的区别
    在一个Excel单元格内输入多行内容
    JSTL1.2学习总结
    Android ico
  • 原文地址:https://www.cnblogs.com/dagon007/p/156817.html
Copyright © 2020-2023  润新知