• 深入解密.NET(Tuple元祖)


    元组(Tuple)数学概念上是指包含特定元素与数列的数据结构,n-Tuple称为一个n元祖。比如拿数据表来类比,数据表的每一行就是一个元祖,每一列是元祖的一个属性。

    它可以视为由于你不想大动干戈创建一个类或者struct去抽象一个数据结构,只想要一个临时工来替代类或者struct的角色时候来充当临时工。Tuple充当一个简单对象存在。

    举个例子:如果需要一个返回一个联系人的名字(string)和年龄(int),可能我们做如下封装

    public class Contants
        {
            public string Name { get; set; }
            public int Age { get; set; }
        }

    换一个场景,如果我们只知道一个函数需要返回string,int两个返回值,而不针对任何特定的对象。Tuple会是新的选择之一。

    var t1=new Tuple<string, int>("xiaoMing", 20);
                var t2 = Tuple.Create<string,int>("", 20);
    
                Console.WriteLine(t1.Item1);
                Console.WriteLine(t1.Item2);
                Console.WriteLine(t1.GetHashCode());

    Tuple的实现也很简单:Tuple<T1,……>最多8个参数,均继承一个internal的接口ITuple。Tuple负责创建上面的对象

    内部实现,只读的readonly属性,哈希值、固定size等:

    public class Tuple<T1, T2, T3, T4, T5, T6, T7, TRest> : IStructuralEquatable, IStructuralComparable, IComparable, ITuple
    {
        // Fields
        private readonly T1 m_Item1;
        private readonly T2 m_Item2;
        private readonly T3 m_Item3;
        private readonly T4 m_Item4;
        private readonly T5 m_Item5;
        private readonly T6 m_Item6;
        private readonly T7 m_Item7;
        private readonly TRest m_Rest;
      
    ***
      ***
  • 相关阅读:
    [并发编程] 进程、线程
    100. 相同的树
    Python 问题集
    this关键字在函数中的应用
    去除列表右边框
    JS——作用域
    javascript——值传递!!
    null和undefined的区别?
    浏览器内核——四大主流
    http常用状态码
  • 原文地址:https://www.cnblogs.com/xmai/p/6773175.html
Copyright © 2020-2023  润新知