【tag】Tuple 类 使用介绍

官方介绍地址:

Tuple 类

参考文章地址:

http://blog.csdn.net/aoshilang2249/article/details/40053213
http://www.cnblogs.com/codelir/p/5143257.html
https://www.oschina.net/translate/tuple-in-c-sharp-7?cmp

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CommonUtility
{
    /// <summary>
    /// Tuple是异类对象的有序序列。 我们经常可以写出返回多个值的方法,所以我们需要创建一个包含多个数据元素的简单结构。
    /// 为了支持这些情况,Tuple 被添加到 C#。 Tuple 是包含多个字段用来表示数据成员的轻量级数据结构。
    /// 如果一个方法返回多个相同类型的数值,那么它可以将这些值存储在一个集合中并返回该集合。
    /// 但是如果一个方法需要返回多个不同类型的值呢,C# 提供了一些可选项,比如 Class / Struct,输出参数和 Tuple。
    /// </summary>
    public class TupleIntroduce
    {
        /// <summary>
        /// Tuple 是异类对象的有序序列。 当一个方法需要返回多个值的时候使用它。Tuple 实例的条目数是固定的。
        /// Tuple 有最大数目为 8 项的限制。 如果我们想创建一个带有更多项的 Tuple,我们必须创建嵌套的 Tuple。 Tuple 的第八项必须是另一个 Tuple。
        /// </summary>
        private void demo()
        {
            //一个成员
            Tuple<int> test = new Tuple<int>(1);
            Console.WriteLine(test.Item1);

            //两个成员
            Tuple<int, double> test1 = new Tuple<int, double>(2, 2.3);
            Console.WriteLine(test1.Item1 + test1.Item2);

            //非8个元素
            Tuple<int, Tuple<string>> test2 = new Tuple<int, Tuple<string>>(3, new Tuple<string>("Nesting"));
            Console.WriteLine(test2.Item1);
            Console.WriteLine(test2.Item2);
            Console.WriteLine(test2.Item2.Item1);

            //8个元素  注意第8个成员很特殊,第8个成员必须嵌套定义成Tuple类型
            Tuple<int, long, float, double, short, byte, char, Tuple<int>> test3 =
                new Tuple<int, long, float, double, short, byte, char, Tuple<int>>(1,
                    2, 3.0f, 4, 5, 6, ‘h‘, new Tuple<int>(8));
            Console.WriteLine(test3.Item4 + test3.Rest.Item1);
        }

        /// <summary>
        /// 元组是一种数据结构,具有特定数量和元素序列。 元组的一个示例是用于存储人员的姓名等标识符的第一个元素,第二个元素和人员收入中该年度第三个元素中的每一年中的数据结构具有三个元素 (称为 3 元组或三元组)。
        /// .NET Framework 直接支持具有 1 到 7 元素的元组。 此外,您可以创建由嵌套中的元组对象的元组的八个或多个元素Rest属性Tuple<T1,?T2,?T3,?T4,?T5,?T6,?T7,?TRest>对象。
        /// 元组常用四种方法︰
        /// 来表示一组数据。 例如,一个元组可以表示的数据库记录,并且其组件可以表示每个字段的记录。
        /// 若要提供轻松访问和数据集的操作。
        /// 若要从方法返回多个值,而无需使用out参数 (在 C# 中) 或ByRef参数 (在 Visual Basic 中)。
        /// 若要将多个值传递给通过单个参数的方法。 例如,Thread.Start(Object)方法只有一个参数,允许你提供一个线程在启动时执行的方法的值。
        /// 如果你提供Tuple<T1,?T2,?T3>对象作为方法自变量,则可以提供有三个项的数据的线程的启动例程。
        /// </summary>
        private void TupleCreate()
        {
            // Create a 7-tuple.
            var population = new Tuple<string, int, int, int, int, int, int>(
                                       "New York", 7891957, 7781984,
                                       7894862, 7071639, 7322564, 8008278);
            // Display the first and last elements.
            Console.WriteLine("Population of {0} in 2000: {1:N0}",
                              population.Item1, population.Item7);
            // The example displays the following output:
            //       Population of New York in 2000: 8,008,278

            //通过使用一个帮助器方法创建相同的元组对象是更为简单,如以下示例所示。
            // Create a 7-tuple.
            var population = Tuple.Create("New York", 7891957, 7781984, 7894862, 7071639, 7322564, 8008278);
            // Display the first and last elements.
            Console.WriteLine("Population of {0} in 2000: {1:N0}",
                              population.Item1, population.Item7);
            // The example displays the following output:
            //       Population of New York in 2000: 8,008,278

            //Create帮助器方法直接支持创建有一至八个组件 (即,到八元组的单一实例) 的元组对象。
            //尽管没有组件的数量没有实际限制但元组可能具有,帮助程序方法不是可用于创建具有九个或多个组件的元组。
            //若要创建此类元组,必须调用Tuple<T1,?T2,?T3,?T4,?T5,?T6,?T7,?TRest>.Tuple<T1,?T2,?T3,?T4,?T5,?T6,?T7,?TRest>构造函数。
            var primes = Tuple.Create(2, 3, 5, 7, 11, 13, 17, 19);
            Console.WriteLine("Prime numbers less than 20: " +
                              "{0}, {1}, {2}, {3}, {4}, {5}, {6}, and {7}",
                              primes.Item1, primes.Item2, primes.Item3,
                              primes.Item4, primes.Item5, primes.Item6,
                              primes.Item7, primes.Rest.Item1);
            // The example displays the following output:
            //    Prime numbers less than 20: 2, 3, 5, 7, 11, 13, 17, and 19
        }

    }
}
时间: 2024-10-05 06:16:38

【tag】Tuple 类 使用介绍的相关文章

设置定时任务(Timer类的介绍)

设置定时任务(Timer类的介绍) 在我们的许多项目中,我们都需要用到定时任务,因此想借此博文来对定时任务进行一个介绍. 设置定时任务步骤如下: 先new一个Timer对象 Timer timer = new Timer() ; 然后调用它的schedule方法,例如:timer.schedule(new Task(), 5 * 1000,5*1000); 相信上面的代码我们不会陌生,即使我们没有写过,但我们一定见到过. 要注意的是:上面第二步所提到的schedule方法有四个重载的方法.下面进

Tstrings类简单介绍及实例

用TStrings保存文件;var  S: TStrings;begin  S := TStringList.Create();  { ... }  S.SaveToFile('config.txt', TEncoding.UTF8); Tstrings类简单介绍及实例 在DELPHI的程序开发过程中Tstrings类的使用是比较频繁的,下面就此类在DELPHI5的开发环境中进行一下简单的介绍及实例(注:本文只对tstrings类中的方法及属性进行介绍, 从其父类继承的属性及方法不属本文讨论之内

【Entity Framework】初级篇--ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateManager类的介绍

本节,简单的介绍EF中的ObjectContext.ObjectQuery.ObjectStateEntry.ObjectStateManager这个几个比较重要的类,它们都位于System.Data.Entity.dll下的System.Data.Objects命名空间下.在后续的章节中,我们经常会用到它们的某些方法,以便完成我们的某些操作或目的.本节,简单的说明一下以后我们可能会用到的各个类的方法,以方便我们后续的学习. ObjectContext封装 .NET Framework 和数据库

Python中tuple的功能介绍

Tuple的功能介绍 1. 元组的两种方法 1. 元组的内置方法 两个元组的相加 格式:x.__add__(y)等同于x+y 例如:tu1 = (1,2,3,) print(tu1.__add__((2,3,4,))) >>> (1, 2, 3, 2, 3, 4) 返回值:tuple #只能是两个元组相加,生成一个新元组 判断是否是包含关系 格式:x.__contains__(y)等同于y in x 例如:tu1 = (1,2,3,) print(tu1.__contains__(3))

面向对象中关于元类的介绍与异常处理

一.异常处理 1. 什么是异常处理     异常是错误发生的信号,一旦程序出错就会产生一个异常,如果该异常     没有被应用程序处理,那么该异常就会抛出来,程序的执行也随之终止 异常包含三个部分:         1. traceback异常的追踪信息         2. 异常的类型         3. 异常的信息 错误分为两大类:         1. 语法上的错误:在程序运行前就应该立即修正         2. 逻辑上的错误 2. 为何要异常处理 避免程序因为异常而崩溃,所以在应用程

Google guava工具类的介绍和使用

概述 工具类 就是封装平常用的方法,不需要你重复造轮子,节省开发人员时间,提高工作效率.谷歌作为大公司,当然会从日常的工作中提取中很多高效率的方法出来.所以就诞生了guava. guava的优点: 高效设计良好的API,被Google的开发者设计,实现和使用 遵循高效的java语法实践 使代码更刻度,简洁,简单 节约时间,资源,提高生产力 Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如: 集合 [collections] 缓存 [caching] 原生类型支持 [

volley源码解析(二)--Request&lt;T&gt;类的介绍

在上一篇文章中,我们已经提到volley的使用方式和设计的整体思路,从这篇文章开始,我就要结合具体的源码来给大家说明volley功能的具体实现. 我们第一个要介绍的类是Request<T>这个一个抽象类,我将Request称为一个请求,通过继承Request<T>来自定义request,为volley提供了更加灵活的接口. Request<T>中的泛型T,是指解析response以后的结果.在上一篇文章中我们知道,ResponseDelivery会把response分派

Object类简单介绍

在java语言中有一个特殊类Object,该类是java.lang类库中的一个类,所有的类都是直接或间接地继承该类而得到的.所以说Object类是所有类的源. 故,我们今天就来好好地了解一下Object类的方法. Object类中有如下的一些方法: protected Object clone(),boolean equals(Object obj),protected void finalize(),Class<?>getClass() int hashCode(),void notify(

android中画图类的介绍Path

Paint类相关属性: /** * Paint类介绍 * * Paint即画笔,在绘图过程中起到了极其重要的作用,画笔主要保存了颜色, * 样式等绘制信息,指定了如何绘制文本和图形,画笔对象有很多设置方法, * 大体上可以分为两类,一类与图形绘制相关,一类与文本绘制相关. * * 1.图形绘制 * setARGB(int a,int r,int g,int b); * 设置绘制的颜色,a代表透明度,r,g,b代表颜色值. * * setAlpha(int a); * 设置绘制图形的透明度. *