zoukankan      html  css  js  c++  java
  • C# 3.0 / C# 3.5 对象集合初始化器、匿名类

    对象集合初始化器

      在 .NET 2.0 中构造一个对象的方法一是提供一个重载的构造函数,二是用默认的构造函数生成一个对象,然后对其属性进行赋值。

      在 .NET 3.5/C# 3.0 中,我们有一种更好的方式来进行对象的初始化,那就是使用对象初始化器。(这个特性也是匿名类的一个基础,所以放在匿名类之前介绍)

    对象初始化:

        User user = new User { Id = 1, Name = "Zouqj", Age = 27 };

    集合初始化:

        List<Dog> dogs = new List<Dog>()
        {
          new Dog() { Name = "Tom", Age = 1 },
          new Dog() { Name = "Lucy", Age = 3 }
        };

    创建并初始化数组:

        string[] array = { "西施", "貂蝉" };

    匿名类

      匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中,而无须首先显式定义一个类型。(每个属性的类型由编译器推断)

      我们可以使用 new { object initializer } 或 new[ ] { object, …} 来初始化一个匿名类或不确定类型的数组。

      匿名类的对象需要使用 var 关键字声明。示例如下:

        var p = new { Id = 1, Name = "zouqj", Age = 27 };       //属性名字和顺序不同会生成不同类

    应用场景:

      直接使用 select new { object initializer } 这样的语法就是将一个 LINQ 查询的结果返回到一个匿名类中。

    注意:

      当出现“相同”的匿名类时,编译器只会创建一个匿名类。(类型名由编译器生成,并且不能在源代码级使用)

      编译器如何区分匿名类是否相同:

        属性名、属性值(因为这些属性是根据值来确定类型的)、属性个数、属性的顺序。

      匿名类的属性是只读的,可放心传递,并且可用在线程间共享数据。

  • 相关阅读:
    HttpURLConnection用法详解
    Docker应用场景
    算法1
    Postman 使用详解
    Postman用法简介
    cookie和session
    HTTP简介
    get和post的区别
    git 同步非master分支
    SparseArray类
  • 原文地址:https://www.cnblogs.com/zhangchaoran/p/8680958.html
Copyright © 2011-2022 走看看