zoukankan      html  css  js  c++  java
  • C#3.0 新特性学习笔记(3):匿名类型

     有些时候我们需要临时保存一些运算的中间结果,特别是当这些中间结果是由多个部份组成时,我们常常会去声明一个新的类型,

    以方便保存这些中间结果。表面上看起来这很正常,而细想之后就会发现,这个新类型只服务于这个函数,其它地方都不会再使用它了,

    就为这一个函数而去定义一个新的类型,确实有些麻烦。

    现在,C#3.0中的匿名类型特性就可以很好的解决上面提到的问题,通过匿名类型,我们可以简单使用

       new { 属性名1=值1, 属性名2=值2, ..... , 属性名n=值n }

    的形式直接在函数中创建新的类型,{ }是匿名初始化器。

    对象:

    看下面这个例子:

    class AnonymousType : AppRunner.AbstractApplication 

     
    public override void Run() 
     { 
      var anonymousType1 
    = new { 
       CardNumber 
    = "10001", Name = "van’s", Sex = true 
      }; 

      Console.WriteLine(anonymousType1.CardNumber); 
      Console.WriteLine(anonymousType1.Name); 

      var anonymousType2 
    = new { 
       CardNumber 
    = "10002", Name = "martin", Sex = true 
      }; 

      anonymousType2 
    = anonymousType1; 
     } 
    }


    在新类型中只能有字段成员,而且这些字段的类型也是通过初值的类型推断出来的。如果在声明新的匿名类型时,新类型的字段名、

    顺序以及初始值的类型是一致的,那么将会产生相同的匿名类型,所以上例中anonymousType1和anonymousType2的类型是相同的,

    自然能进行anonymousType2=anonymousType1的赋值。


    关于这点,可以参考如下比较:

    var p1 = new { name = ”reallypride”, age = 23 }; 
    var p2 
    = new { name = “jingxuan”, age = 23 }; 

    那么,编译器会自动定义一个包含nameage属性的类。p1p2结构相同,是同一个类的实例。

    下面,我们再定义一个变量,

    var p3 = new { age = 23, name = “reallypride” }; 

    表面上来看,意义是一样的,但是语法不同,这样编译器会新建一个新的类,也就是p3p1,p2不是同一个类的实例,因为p3声明属性的位置不相同。

    数组:

    如果要定义数组,可以这样定义:

    var intArray = new[] { 1234 }; 
    var strArray 
    = new[] { “a”, “b”, “c” }; 
    var someTypeArray 
    = 
               
    new[] { 
                      
    new { name = “reallypride”, age = 23 }, 
                      
    new { name = “jingxuan”, age = 23 } 
                     };

    匿名类型要点:

    1. 可以使用new关键字调用匿名初始化器创建一个匿名类型。
    2. 匿名类型直接继承自System.Object
    3. 匿名类型的属性是编译器根据初始化器自动推断。

    匿名类型常和var一起使用。

  • 相关阅读:
    .Net Core使用Socket与树莓派进行通信
    c#中Socket网络通信的入门
    django 中 cookie与session 相关的知识
    怎么解决MySQL密码问题
    python 虚拟环境安装与卸载
    Linux 怎么清理缓存
    VMware 虚拟机黑屏问题
    如何在Ubuntu上给软件创建快捷方式
    Linux-Windows10双系统安装
    Tomcat开启JMX监控
  • 原文地址:https://www.cnblogs.com/Dlonghow/p/1313317.html
Copyright © 2011-2022 走看看