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

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. 在 .NET Core 中使用 Diagnostics (Diagnostic Source) 记录跟踪信息

    前言 最新一直在忙着项目上的事情,很久没有写博客了,在这里对关注我的粉丝们说声抱歉,后面我可能更多的分享我们在微服务落地的过程中的一些经验.那么今天给大家讲一下在 .NET Core 2 中引入的全新 ...

  2. Python--合并2个字典成1个新字典的9种方法

    d1 = {'name': 'revotu', 'age': 99} d2 = {'age': 24, 'sex': 'male'} 输出: {'name': 'revotu', 'age': 24, ...

  3. JS---DOM---事件冒泡和阻止事件冒泡,总结事件

    事件冒泡: 多个元素嵌套, 有层次关系 ,这些元素都注册了相同的事件, 如果里面的元素的事件触发了, 外面的元素的该事件自动的触发了     事件有三个阶段: 1.事件捕获阶段  :从外向内 2.事件 ...

  4. 「SAP技术」为正常库存管理的物料做成本中心采购会是什么结果?

    SAP 为正常库存管理的物料做成本中心采购会是什么结果? 这种采购可以正常进行,收货后SAP会更新采购订单里指定的费用类科目,而库存数量和库存价值都不会增加. 1, 如下物料号,是正常做库存管理的物料 ...

  5. Http中URI协议 和URL协议的区别和联系

    虽然说URL和URI是整个网络协议栈很常用的东西.可是,假如你去面试求职者其中的差别,估计十个人有八个人答复不上来. 想要熟悉基础知识的朋友最好还是看一下我这个文章. “A Uniform Resou ...

  6. [Codeforces 1244C] The Football Season

    思维加枚举 题意 :足球赛,赢平所得到的分数分别为w和d,w>d,分别求赢平输的场数,输出一组即可,即x+y+z=n 且 xw+yd=p的一组解. 可以扩展公约数做,但由于注意到d和w<1 ...

  7. Linux - CentOS 7 通过Yum源安装 Nginx

    添加源 sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.no ...

  8. MyBatis框架之第三篇

    8.Spring与Mybatis整合 框架的整合就是软件之间的集成,它很抽象,因此在做整合之前先想好思路.规划好思路然后按照思路一步一步的做就可以实现框架的整合. 8.1.SM整合思路 8.1.1.思 ...

  9. java基础学习笔记 第二周(面向对象)

    Day01 什么是抽象数据类型:将不同数据类型的集合组成的一个整体,我们称为抽象数据类型 类就是一个抽象数据类型 成员变量:类中的数据类型就是成员变量(属性) 方法:类中的一些行为就是方法 面向过程( ...

  10. 从0系统学Android--3.1编写UI界面

    从0系统学Android--3.1编写UI界面 本系列文章目录:更多精品文章分类 本系列持续更新中.... 界面设计和功能开发同样重要,界面美观的应用程序不仅可以大大增加用户粘性,还能帮我们吸引到更多 ...