zoukankan      html  css  js  c++  java
  • C#6.0语法糖剖析(二)

    1、索引初始化

    使用代码

     var numbers2 = new Dictionary<int, string> {[7] = "seven", [9] = "nine", [13] = "thirteen"};

    编译器生成的代码

     Dictionary<int, string> dictionary2 = new Dictionary<int, string>();
        dictionary2[7] = "seven";
        dictionary2[9] = "nine";
        dictionary2[13] = "thirteen";
        Dictionary<int, string> dictionary = dictionary2;

    2、异常过滤器When

    使用代码

    try
    {
        throw new ArgumentException("string error");
    }
    catch (Exception e) when(MyFilter(e))
    {
        WriteLine(e.Message);
    }
    
    private static bool MyFilter(Exception e)
    {
        return e is ArgumentException;
    }

    When语法作用是:在进入到catch之前、验证when括号里MyFilter方法返回的bool,如果返回true继续运行,false不走catch直接抛出异常。

    使用这个filter可以更好的判断一个错误是继续处理还是重新抛出去。按照以前的做法,在catch块内如需再次抛出去,需要重新throw出去,这时的错误源是捕捉后在抛的,而不是原先的,有了when语法就可以直接定位到错误源。

    3、catch和finally代码块内的await

    Await异步处理是在c#5.0提出的,但不能在catch和finally代码块内使用,这次在C#6.0更新上支持了。

    使用代码:

    async void Solve()
    {
        try
        {
            await HttpMethodAsync();
        }
        catch (ArgumentException e)
        {
            await HttpMethodAsync();
        }
        finally
        {
            await HttpMethodAsync();
        }
    }

    3、nameof表达式

    使用代码:

    string nameOfAuthor;
    WriteLine(nameof(nameOfAuthor));

    使用nameof来获取成员变量的名称,上面会输出:"nameOfAuthor"。

  • 相关阅读:
    测试AtomicInteger的可见性、有序性、原子性
    java实现hssf导出excel文件及自定义选择路径工具类
    map转换成com.google.gson.JsonObject
    String[]转List<String>
    classLoader打破双亲委托机制
    类加载器的加密解密
    自定义类加载器和父委托机制
    java中获取项目路径
    JVM内置三大类加载器详细介绍
    初识继承和多态
  • 原文地址:https://www.cnblogs.com/frankyou/p/4692150.html
Copyright © 2011-2022 走看看