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 对象的区别

  • 相关阅读:
    使用一系列命令生成字母数字符号组合
    linux分析apache日志获取最多访问的前10个IP
    shell脚本输出九九乘法表
    shell脚本输出空心等腰三角形
    awk与sed命令面试题整理
    linux分析apache日志获取最多访问的前10个IP
    iOS开发-由浅至深学习block
    PM常用软件&工作平台
    iOS开发之—— 各种加密的使用(MD5,base64,DES,AES,RSA,DSA)
    MVVM With ReactiveCocoa
  • 原文地址:https://www.cnblogs.com/jiaofu2012/p/3480335.html
Copyright © 2011-2022 走看看