1)

先说组元:一个数据结构,由通过逗号分割的,用于传递给一个程序或者操作系统的一系列值的组合。

NET Framework 直接支持一至七元素的元组

Tuple<T1, T2, T3, T4, T5, T6, T7>
此外,您可以通过嵌套的元组中的对象创建八个或多个元素的元组在Rest 属性中的Tuple<T1, T2, T3, T4, T5, T6, T7, TRest> 对象。

简单的示例:

  1. //一个元素的元组
  2. Tuple<int> test = new Tuple<int>(34);
  3. //两个元素的元组 1<n<8
  4. Tuple<string, int> test2 = Tuple.Create<string, int>("str", 2);
  5. Tuple<int, int> test2_1 = new Tuple<int, int>(2,2);
  6. //8个元素的元组(注意,Tuple<类型...>: 基本"类型"最多7个, 第八个元素类型必须也为元组)
  7. Tuple<int, int, int, int, int, int, int, Tuple<int>> test3 =
  8. new Tuple<int, int, int, int, int, int, int, Tuple<int>>(1, 2, 3, 4, 5, 6, 7, new Tuple<int>(8));
  9. //也可以这样
  10. Tuple<int, int, Tuple<int, int>> test_i_i_Tii = new Tuple<int, int, Tuple<int, int>>(1,1,new Tuple<int,int>(2,3));
  11. Console.WriteLine(test.Item1);
  12. Console.WriteLine(test2.Item1 + test2.Item2);
  13. Console.WriteLine(test2_1.Item1 + test2_1.Item2);
  14. Console.WriteLine(test3.Item1 + test3.Item2 + test3.Item3 + test3.Item4 + test3.Item5 + test3.Item6 + test3.Item7 + test3.Rest.Item1);

结果:

2)多个返回值问题
一般我们都是用out关键字(相比其他语言,如golang,out关键字还是稍微有点麻烦),此时我们可以使用元组实现:

  1. namespace TupleDemo
  2. {
  3. class Program
  4. {
  5. static void Main(string[] args)
  6. {
  7. //使用out拿到多个返回值
  8. string outparam = "";
  9. int returnvalue = FunOutParamDemo(out outparam);
  10. Console.WriteLine(returnvalue + "    " + outparam);
  11. //使用元组拿到多个返回值
  12. Tuple<int, string> r = FunTupleParamDemo();
  13. Console.WriteLine(r.Item1 + "    " + r.Item2);
  14. Console.Read();
  15. }
  16. /// <summary>
  17. /// out关键字,实现返回两个返回值
  18. /// </summary>
  19. /// <param name="o"></param>
  20. /// <returns></returns>
  21. public static int FunOutParamDemo(out string o)
  22. {
  23. o = "returnValue";
  24. return 10;
  25. }
  26. /// <summary>
  27. /// 使用元组实现【间接】返回【两个】返回值
  28. /// </summary>
  29. /// <returns></returns>
  30. public static Tuple<int, string> FunTupleParamDemo() {
  31. return new Tuple<int, string>(10, "returnValue");
  32. }
  33. }
  34. }

运行结果:

C# Tuple<T1,T2....T>元组的使用的更多相关文章

  1. Tuple<T1,T2,.........T> 元组简单使用

    元组:一个数据结构,逗号分隔,用于传递一个程序或者操作系统的一系列值得组合 NET Framework直接支持一至七元素得数组 Tuple<T1> Tuple<T1,T2> T ...

  2. Action<T1, T2>委托

    封装包含两个参数的方法委托,没有返回值. 语法 public delegate void Action<in T1, in T2>( T1 arg1, T2 arg2 ) 类型参数 in ...

  3. DateTime.Compare(t1,t2)比較两个日期大小

    DateTime.Compare(t1,t2)比較两个日期大小,排前面的小,排在后面的大,比方:2011-2-1就小于2012-3-2返回值小于零:  t1 小于 t2. 返回值等于零 : t1 等于 ...

  4. 使用Func<T1, T2, TResult>

    使用Func<T1, T2, TResult> 委托返回匿名对象   Func<T1, T2, TResult> 委托 封装一个具有两个参数并返回 TResult 参数指定的类 ...

  5. 详解C# Tuple VS ValueTuple(元组类 VS 值元组)

    C# 7.0已经出来一段时间了,大家都知道新特性里面有个对元组的优化,并且网上也有大量的介绍,这里利用详尽的例子详解Tuple VS ValueTuple(元组类VS值元组),10分钟让你更了解Val ...

  6. java 多线程,T1 T2 T3 顺序执行

    一.程序设计 1.抽象公共类PublicThread,具有先前线程属性previousThread.父类为Thread 2.在PublicThread的run()方法中判断previousThread ...

  7. 三个线程T1,T2,T3.保证顺序执行的三种方法

    经常看见面试题:有三个线程T1,T2,T3,有什么方法可以确保它们按顺序执行.今天手写测试了一下,下面贴出目前想到的3种实现方式 说明:这里在线程中我都用到了sleep方法,目的是更容易发现问题.之前 ...

  8. DateTime.Compare(t1,t2)比较两个日期大小

    DateTime.Compare(t1,t2)比较两个日期大小,排前面的小,排在后面的大,比如:2011-2-1就小于2012-3-2返回值小于零:  t1 小于 t2. 返回值等于零 : t1 等于 ...

  9. Func<T1, T2, TResult> Delegate 系统Func委托类型

    原文发布时间为:2011-03-25 -- 来源于本人的百度文章 [由搬家工具导入] http://msdn.microsoft.com/en-us/library/bb534647%28v=VS.1 ...

随机推荐

  1. 消息中间件系列四:RabbitMQ与Spring集成

    一.RabbitMQ与Spring集成  准备工作: 分别新建名为RabbitMQSpringProducer和RabbitMQSpringConsumer的maven web工程 在pom.xml文 ...

  2. there was an error running the selected code generator unable to retrieve metadata for

    there was an error running the selected code generator unable to retrieve metadata for PROBLEM: I ha ...

  3. OpenGL 获取当前屏幕坐标的三维坐标(gluUnProject使用例子 Qt)

    之前使用VS+glut实现了gluUnProject使用例子,用于渲染管道的逆过程,将屏幕坐标转换为opengl三维坐标,本文将尝试使用QT来实现. 代码如下:  main.cpp  12345678 ...

  4. 22状态模式State

    一.什么是状态模式 State模式也叫状态模式,是行为设计模式的 一种.State模式允许通过改变对象的内部状态 而改变对象的行为,这个对象表现得就好像修改 了它的类一样. 二.状态模式的应用场景 状 ...

  5. git error: Your local changes to the following files would be overwritten by merge:xxxxxx ,Please commit your changes or stash them before you merge.的phpstorm解决办法

    git报错 error: Your local changes to the following files would be overwritten by merge: .idea/encoding ...

  6. opencv3 图像处理(一)图像缩放( python与c++ 实现)

    opencv3 图像处理 之 图像缩放( python与c++实现 ) 一. 主要函数介绍 1) 图像大小变换 Resize () 原型: void Resize(const CvArr* src,C ...

  7. 最新版本sublime text3注册码

    TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA12C0 A37081C5 D03164 ...

  8. Nginx模块开发与架构解析(nginx安装、配置说明)

    第一章 研究nginx前的准备工作 Linux操作系统需要2.6及其以上的内核(支持epoll) 使用nginx的必备软件 Linux内核参数优化方案 安装nginx 控制nginx 第二章 ngin ...

  9. CTF的一道安卓逆向

    前几天打CTF时遇到的一道安卓逆向,这里简单的写一下思路 首先用jadx打开apk文件,找到simplecheck处(文件名是simplecheck),可以看到基本逻辑就是通过函数a对输入的内容进行判 ...

  10. react使用apollo简单的获取列表

    react yarn add apollo-boost apollo-client react-apollo apollo-cache-inmemory apollo-link-http graphq ...