C#《CLR Via C# 第3版》笔记之(十一) – 匿名类型和元组

  • 匿名类型介绍
  • 元组的牵线

1. 匿名类型介绍

匿名类型其实也像元组一样,定义了后来就无法改变内部元素的称号和个数。

行使匿名类型的代码至极简单:

using System;

namespace cnblog_bowen
{
    public sealed class CLRviaCSharp_11
    {
        static void Main(string[] args)
        {
            var v = new { Name="my name", Age=100 };

            Console.WriteLine("Name={0}, Age={1}", v.Name, v.Age);
            Console.ReadKey(true);
        }
    }
}

在第三回定义的时候指定元素的称号,元素的连串是由系统自动测算的。定义完后就可以可以算作一个实例来拔取了。

前日visual studio也足以“智能感知”匿名类型的属性名了。

匿名类型的有些条条框框:

1)假诺多少个匿名类型的结构完全等同,那么它们之间可以开展赋值操作

2)匿名类型是引用类型,编译器会转变对应的class,而不是struct

3)匿名类型也是Object类派生的,但是无法将Object类型转型回匿名类型。

4)匿名类型无法同日而语一个办法的参数和重返值。

上述3)4)的来头在于,匿名类型的称谓是有编译器按一定规则变化的,在写代码的时候并不知道我们定义的匿名类型的现实名称。

故而,不能从Object转型回匿名类型,也无法指定方法的参数类型和重回值类型。

2. 元组的介绍

C#中的泛型元组类型重载了多个本子,用于创制各个参数类型和个数的元组。

创设元组的点子如下所示:

namespace System
{
    // Summary:
    //     Provides static methods for creating tuple objects.
    public static class Tuple
    {
        public static Tuple<T1> Create<T1>(T1 item1);
        public static Tuple<T1, T2> Create<T1, T2>(T1 item1, T2 item2);
        public static Tuple<T1, T2, T3> Create<T1, T2, T3>(T1 item1, T2 item2, T3 item3);
        public static Tuple<T1, T2, T3, T4> Create<T1, T2, T3, T4>(T1 item1, T2 item2, T3 item3, T4 item4);
        public static Tuple<T1, T2, T3, T4, T5> Create<T1, T2, T3, T4, T5>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5);
        public static Tuple<T1, T2, T3, T4, T5, T6> Create<T1, T2, T3, T4, T5, T6>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6);
        public static Tuple<T1, T2, T3, T4, T5, T6, T7> Create<T1, T2, T3, T4, T5, T6, T7>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7);
        public static Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8>> Create<T1, T2, T3, T4, T5, T6, T7, T8>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8);
    }

元组成立后就是只读的了,无法在对中间的元素进行改动。

元组的一些平整:

1)元组中的字段都是以Item#的法子命名的(即Item1,Item2……)

2)写Tuple和用Tuple的人须求对Item#特性放回的内容有个知道的刺探

3)Tuple类型能够当作艺术的参数和再次来到值

重中之重内容:

匿名类型使得C#更具动态性。而元组则是原先看python时就了解的一个系列,与List类型类似,只是它其中的因素是不可变的。

相关文章