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

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. Ubuntu16.04+GTX2070+Driver418.43+CUDA10.1+cuDNN7.6

    最近需要用到一台服务器的GPU跑实验,其间 COLMAP 编译过程出错,提示 cuda 版本不支持,cmake虽然通过了,但其实没有找到支持的CUDA架构. cv@cv:~/mvs_project/c ...

  2. 手把手教你DIY尼康ML-L3红外遥控器

    项目介绍 ML-L3是用于尼康部分型号相机的无线红外遥控器,可以通过红外方式来控制快门的释放,支持B门拍摄.官方售价100RMB左右,山寨版售价10RMB左右.虽然也能实现基本的遥控功能,但是功能还是 ...

  3. C# ling to sql 左表连接

    var begin_daily = from a in _postgreDbContext.tab1 join b in _postgreDbContext.tab2 on a.id equals b ...

  4. Android.mk语法说明

    版权申明: 本文原创首发于以下网站,您可以自由转载,但必须加入完整的版权声明 博客园:https://www.cnblogs.com/MogooStudio/ csdn博客:https://blog. ...

  5. 区块链技术驱动金融.mobi

    链接:https://pan.baidu.com/s/1yY8f_PglsPoudb76nru9Ig 提取码:c58o 想一起学习区块链的朋友可以加好友一个学习哦,共同进步

  6. 监听属性watch

    immediate.deep data() { return { firstName: "刘", lastName: "XX", fullName: " ...

  7. IT兄弟连 HTML5教程 CSS3属性特效 定义省略文本的处理方式

    text-overflow属性仅是注解,当文本溢出时是否显示省略标记,并不具备其它的样式属性定义.我们想要实现溢出时产生省略号的效果.还必须定义:强制文本在一行内显示(white-space:nowr ...

  8. weblogic启动服务器Authentication denied: Boot identity not valid

    新分配的测试服务器,已经安装好了weblogic,使用命令nohub ./startWeblogic.sh启动weblogic没有问题 登录控制台,点击环境-服务器-新建,一步步完成后,点击部署.选择 ...

  9. Dubbo学习系列之十二(Quartz任务调度)

    Quartz词义为"石英"水晶,然后聪明的人类利用它发明了石英手表,因石英晶体在受到电流影响时,它会产生规律的振动,于是,这种时间上的规律,也被应用到了软件界,来命名了一款任务调度 ...

  10. LinqDB 查询数据库

    LinqDB数据库查询数据,还是很方便的. 1. 添加Entity数据实体类 方便之后映射操作 /// <summary> /// 课件 /// </summary> [Dat ...