元组:一个数据结构,逗号分隔,用于传递一个程序或者操作系统的一系列值得组合

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

Tuple<T1>

Tuple<T1,T2>

Tuple<T1,T2,T3>

Tuple<T1,T2,T3,T4>

Tuple<T1,T2,T3,T4,T5>

Tuple<T1,T2,T3,T4,T5,T6>

Tuple<T1,T2,T3,T4,T5,T6,T7>

还可以通过嵌套得元组中得对象创建八个/多个元素得元组再Rest属性中的Tuple<T1,T2,T3,T4,T5,T6,T7,TRestle>对象

单的示例:

  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. }

运行结果:

原博客地址https://www.cnblogs.com/mschen/p/8333903.html

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

  1. C# Tuple<T1,T2....T>元组的使用

    1) 先说组元:一个数据结构,由通过逗号分割的,用于传递给一个程序或者操作系统的一系列值的组合. NET Framework 直接支持一至七元素的元组 Tuple<T1> Tuple< ...

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

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

  3. Action<T1, T2>委托

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

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

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

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

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

  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. Table实现表头固定 内容滚动

    <div style="width: 800px;"> <div class="table-head"> <table> & ...

  2. Python是什么?你真的了解Python吗?

    一.Python是什么相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是一种开发语言,而且已经进阶到 ...

  3. ASP.NET Core知多少(13):路由重写及重定向

    背景 在做微信公众号的改版工作,之前的业务逻辑全塞在一个控制器中,现需要将其按厂家拆分,但要求入口不变. 拆分很简单,定义控制器基类,添加公用虚方法并实现,各个厂家按需重载. 但如何根据统一的入口参数 ...

  4. 详解EMC测试国家标准GB/T 17626

    电波暗室,用于模拟开阔场,同时用于辐射无线电骚扰(EMI)和辐射敏感度(EMS)测量的密闭屏蔽室. 来源:http://gememc.com/upload/201712/201712010930227 ...

  5. NPOI 设置下拉列表

    HSSFWorkbook workbook = new HSSFWorkbook();//创建工作簿 ISheet sheet = workbook.CreateSheet();//创建sheet页 ...

  6. 解决:install service error: InstallAsEventCreate() failed: xxx registry key already exists

    目录 一.事故现场 二.分析 三.解决方案 一.事故现场 在windows系统下安装服务,cmd窗口执行如下命令: "E:\work\_base\PsUm\PsUser\LdapWebSer ...

  7. Oracle - exp实战

    一.概述 exp/imp是oracle中的一个逻辑导出和导入工具,假想一个场景,当我们使用exp命令在对用户进行导出的时候,如果该用户中的某些表的数据有修改,或表结构进行了修改,或者表被删除,那么我们 ...

  8. DataGridView自动保存列的宽度和位置

    WinForm程序中表单的自动保存列的宽度和位置,是一种常见的功能,对于用户体验来说是非常好的.现记录一下实现过程: 1.新建一个类,命为为:DataGridViewColumnStyle. 这个类实 ...

  9. mysql常用运行原理

    MySQL的客户端/服务器架构 MySQL的服务器程序直接和我们存储的数据打交道,然后可以有好多客户端程序连接到这个服务器程序,发送增删改查的请求,然后服务器就响应这些请求,从而操作它维护的数据.和微 ...

  10. SpringCloud(八):springcloud遇到的坑总结

    spring boot 版本演信息: 文章链接:https://github.com/spring-projects/spring-boot/releases?after=v2.0.0.M3 http ...