zoukankan      html  css  js  c++  java
  • 深入解密.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;
      
    ***
      ***
  • 相关阅读:
    eclipse转ieda新手教程之-如何从svn导入一个 Maven 项目到 IntelliJ IDEA 2017
    从svn下载maven项目到ieda
    Maven的下载、安装与配置
    java.lang.NoClassDefFoundError: com/google/common
    guava.jar下载
    js,时间格式的验证
    为什么String类型的日期,传到前台变成数字了
    java&oracle日期查询
    java空指针异常
    java获取当前时间的第二天
  • 原文地址:https://www.cnblogs.com/xmai/p/6773175.html
Copyright © 2011-2022 走看看