zoukankan      html  css  js  c++  java
  • 特性

    匿名类型 和 对象集合初始化器

    匿名类型

    var KeyPair1 = new { Key="yuyi",Value="Programer"};

    在内部自动生成

    <>f__AnonymousType0<<Key>j__TPar, <Value>j__TPar>

    这个类型是直接继承自System.Object的,并且是internal seald(只在程序集内可见,并且不能被继承)。有心的你也许会发现,这个类型还是一个泛型类型,那么只要我们在使用一个匿名类型的时候参数个数,参数名称不发生变化,编译器是不会为我们产生更多的类型的

    对象集合初始化器

    类似的

    Book book = new Book { Title="Inside COM",ISBN="123-456-789"};
      Book b = new Book { Title = "Inside COM", ISBN = "123-456-789" };
      Book bb = new Book("aa") { Title = "Inside COM", ISBN = "123-456-789" };
     Console.Read();
                    List<Book> ListBook = new List<Book> {  new Book("aa"){ Title = "Inside COM", ISBN = "123-456-789" },new
                      Book("aa","bb"){ Title = "aaa", ISBN = "aaa" }};
                    Dictionary<int, string> dicResult = new Dictionary<int, string>
                                                                   {
                                                                       {0, "11"},
                                                                       {1, "图片大小超过限制"},
                                                                       {2, "上传图片异常"},
                                                                       {3, "上传图片成功"}
                                                                   };
    
                    List<Book> ListBook = new List<Book> { { Title = "Inside COM", ISBN = "123-456-789" } };

    对象初始化器 也会在内部自动生成一些代码

    Book book = new Book();
    book.Title = "Inside COM";
    book.ISBN = "123-456-789";
    Book book = new Book("aa");
    book.Title = "Inside COM";
    book.ISBN = "123-456-789";

    等等

    不过  new List<Book> { { Title = "Inside COM", ISBN = "123-456-789" } };  会报错 而

    new Dictionary<int, string>   {  {0, "11"},{1, "图片大小超过限制"},  }; 不会报错

    是因为

    Dictionary<int, string> dicResult = new Dictionary<int, string>
                                                                   {
                                                                       {0, "11"},
                                                                       {1, "图片大小超过限制"},
                                                                       {2, "上传图片异常"},
                                                                       {3, "上传图片成功"}
                                                                   };
    生成的IL 是
     Dictionary<int, string> <>g__initLocal0 = new Dictionary<int, string>();
            <>g__initLocal0.Add(0, "11");
            <>g__initLocal0.Add(1, "图片大小超过限制");
            <>g__initLocal0.Add(2, "上传图片异常");
            <>g__initLocal0.Add(3, "上传图片成功");
            Dictionary<int, string> dicResult = <>g__initLocal0;

    最后啰嗦一句。

    匿名类型 和 对象集合初始化器 代码层次上的区别是 new 和 new 对象的区别

  • 相关阅读:
    oracle基本语句
    java Scanner和异常
    流Stream 文件File 流IO
    java基本方法
    jsp页面展示更加商品的分类,控制商品的显示
    使用jquery select2实现下拉框搜索功能
    JSONObject和JSONArray
    GsonUtils.getGson().fromJson() 转泛型集合用法
    java 实现图片上传功能
    mysql :将其中两个数据的某一个字段合拼成一句
  • 原文地址:https://www.cnblogs.com/jiaofu2012/p/3480335.html
Copyright © 2011-2022 走看看