元组功能在 C# 7.0 及更高版本中可用,它提供了简洁的语法,用于将多个数据元素分组成一个轻型数据结构。

元组功能需要 System.ValueTuple 类型和相关的泛型类型(例如 System.ValueTuple<T1,T2>),这些类型在 .NET Core 和 .NET Framework 4.7 及更高版本中可用。若要在面向 .NET Framework 4.6.2 或更早版本的项目中使用元组,请将 NuGet 包 System.ValueTuple 添加到项目。

(double, int) t1 = (4.5, 3);
Console.WriteLine($"Tuple with elements {t1.Item1} and {t1.Item2}.");
// Output:
// Tuple with elements 4.5 and 3.(double Sum, int Count) t2 = (4.5, 3);
Console.WriteLine($"Sum of {t2.Count} elements is {t2.Sum}.");
// Output:
// Sum of 3 elements is 4.5.

,若要定义元组类型,需要指定其所有数据成员的类型,或者,可以指定字段名称。虽然不能在元组类型中定义方法,但可以使用 .NET 提供的方法

(double, int) t = (4.5, 3);
Console.WriteLine(t.ToString());
Console.WriteLine($"Hash code of {t} is {t.GetHashCode()}.");
// Output:
// (4.5, 3)
// Hash code of (4.5, 3) is 718460086.

元组最常见的用例之一是作为方法返回类型。也就是说,你可以将方法结果分组为元组返回类型,而不是定义 out 方法参数,

var xs = new[] { 4, 7, 9 };
var limits = FindMinMax(xs);
Console.WriteLine($"Limits of [{string.Join(" ", xs)}] are {limits.min} and {limits.max}");
// Output:
// Limits of [4 7 9] are 4 and 9var ys = new[] { -9, 0, 67, 100 };
var (minimum, maximum) = FindMinMax(ys);
Console.WriteLine($"Limits of [{string.Join(" ", ys)}] are {minimum} and {maximum}");
// Output:
// Limits of [-9 0 67 100] are -9 and 100(int min, int max) FindMinMax(int[] input)
{if (input is null || input.Length == 0){throw new ArgumentException("Cannot find minimum and maximum of a null or empty array.");}var min = int.MaxValue;var max = int.MinValue;foreach (var i in input){if (i < min){min = i;}if (i > max){max = i;}}return (min, max);
}

C#元组类型System.ValueTuple相关推荐

  1. python元组类型的变量以及字符串类型的变量作为参数进行传值

    今天做selenium元素对象剥离时(我把元素对象都放到了元组类型的变量中,格式:user = ("id","X-Auto-2")),遇到一个元组变量,以及st ...

  2. Java元组类型之javatuples

    有时候经常需要返回2个值或多个值的一个序列,比如数据表的一条记录,文件的一行内容等.除了使用数组Array.集合(List.Set.Map)这些容器类型之外,在Java中我们就必须创建一个Class来 ...

  3. X509证书 指定了无效的提供程序类型 System.Security.Cryptography.CryptographicException 错误解决方法

    X509证书 指定了无效的提供程序类型 System.Security.Cryptography.CryptographicException 错误解决方法 参考文章: (1)X509证书 指定了无效 ...

  4. 序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用

    学习 EF Code First+MVC 时遇到了在请求JsonResult时出现 序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用 的异常,原因 ...

  5. python内置序列类型_Python序列内置类型之元组类型详解

    Python序列内置类型之元组类型详解 1.元祖的概念 Python中的元组与列表类似,都是一个序列,不同的是元组的元素不能修改而已. 2.元组的创建 元组使用小括号,列表使用方括号. tup = ( ...

  6. 元组类型与列表类型的操作函数和方法

    序列类型定义 序列是具有先后关系的一组元素,序列是一维元素向量,元素之间可以相同,元素类型可以不同.元素间由序号引导,通过下标访问序列的特定元素 序列类型的衍生包括:字符串类型.元组类型.列表类型 序 ...

  7. 预定义的类型“System.Object”未定义或未导入

    打开一个以前的程序 ,发现报这个错误.检查了程序,发现程序的引用 System 不见了 ,尝试 引用失败.. 查了有人说重新建立 Sln文件有用.. 一头雾水,随后 尝试操作 ,程序有用了 具体步骤: ...

  8. WPF 类型“System.ComponentModel.ISupportInitialize”在未被引用的程序集中定义。

    问题:类型"System.ComponentModel.ISupportInitialize"在未被引用的程序集中定义.必须添加对程序集"System, Version= ...

  9. 关于Python3.7和Python3.6中元组类型数据内存存储问题

    关于Python3.7和Python3.6中元组类型数据内存存储问题 小编最近发现了一个瑕疵 当定义一个元组类型的变量后,若在程序后面再定义一个元组变量,这两个元组的内容相同,那么在不同的版本中会出现 ...

最新文章

  1. 涉及位操作的算法辑录
  2. python csdn技术社区_CSDN.NET - 全球最大中文IT社区,为IT专业技术人员提供最全面的信息传播和服务平台...
  3. 高性能MySQL数据库(含二级考试)-张晨光-专题视频课程
  4. 图像处理的傅里叶变换理解
  5. C语言,去你的策略模式!
  6. linux 将任务挂到后台,linux下使用screen或则nohup将任务放到后台运行
  7. C#实现重新启动计算机
  8. Ubuntu 12.04下jdk的安装与配置
  9. Aoto Deploy Project 1.0 (rebuild version)
  10. Java基础String类
  11. DEM高程数据的获取和应用(全国DEM数据可直接下载)
  12. 数学建模论文写作——框架和要点
  13. Drools教程(基础篇)—— Eclipse插件安装
  14. java 定时凌晨_Java定时任务,每天凌晨1点执行
  15. CPL、BCPL、B语言
  16. 标准的项目管理完整流程图
  17. 黎曼猜想 量子计算机,理解黎曼猜想(一)背景
  18. C语言中整型变量四舍五入,怎样将整型变量按四舍五入转换成整数
  19. eclipse cdt 导入c ++ 工程并建立头头文件 索引
  20. ubuntu开放端口21

热门文章

  1. 一个获取a标签传值的函数
  2. 把准脉搏 U-Mail邮件系统2014开足马力
  3. 委派用户管理Hyper-v
  4. php移动签批源码_PHP让网站移动访问更加友好方法
  5. testng接口自动化测试_Java+Maven+TestNG接口(API)自动化测试教程(10) 使用 Jenkins 构建自动化测试持续集成...
  6. mui aniShow 动画属性
  7. python下载安装搭建
  8. BZOJ1001 狼抓兔子 终于过了!
  9. Ctrl与Caps Lock键的交换
  10. Object-C 类,对象,运行时,isa