C# tuple元组详解
创始人
2025-05-30 00:59:16
0

概念

本质就是个数据结构,它是将多个数据元素分组成一个轻型数据结构。

如何声明元组变量(针对.net framework 4.7+ 和 .net core 2.0+)

不带字段名称元组

## t1就是个变量 它的类型是元组类型
## 左侧括号定义的是参数列表  等于号右侧就是个t1赋值
## 需要注意等号左右侧 参数个数要一致 且对应位的数据类型要匹配一致
(double, int) t1 = (4.5, 3);

不带字段名称元组的取值

## 使用 变量,ItemN 其中第一位就是Item1 第二位就是Item2 依次类推
var ontValue =t1.Item1;
var twoValue =t1.Item2;
...
var NValue =t1.ItemN;

带字段名称的元组

## 定义方式一 其中A和B就是元组的字段
(double A, int B) t1 = (4.5, 3);
## 定义方式二  其中A和B就是元组的字段
var t1 = (A:4.5, B:3);

带字段名称元组的取值

### 获取字段A和B
double _A=t1.A;
int _B =t1.B;

带字段名称元组的赋值

t1.A =30.8;
t1.B =90;

在.net framework 4.7以下版本

(反正2023-03-18之前没有把上述的新特性加入)
在低版本下需要使用Tuple(静态类)

语法:

Tuple
由上面可以看出 除非是嵌套的元组 ,普通的最多只能有8位元素

如何声明元组变量

## 方式一 使用静态方法Create
var t2= Tuple.Create(90, "程序员Ken", 8.05);## 方式二 
Tuple t2 = new Tuple(90, "程序员Ken", 8.05);

取值

### 跟上面的类似 可以看看“不带字段名称元组的取值”
int _item1=t2.Item1;
string _item2 =t2.Item2;
double _item3 =t2.Item3;

嵌套元组

如果要在一个元组中包含八个以上的元素,则可以通过嵌套另一个元组对象作为第八个元素来实现。可以使用Rest属性访问最后一个嵌套元组。要访问嵌套元组的元素,请使用

var numbers = Tuple.Create(1, 2, 3, 4, 5, 6, 7, Tuple.Create(8, 9, 10, 11, 12, 13));
numbers.Item1; // 返回第1个元素 
numbers.Item7; // 返回第7个元素 
numbers.Rest.Item1; //返回就是第8个元素(另一个元组)  实际值(8,9,10,11,12,13)

元组的用法

元组可以在以下情况下使用:

当您想从一个方法中返回多个值而不使用ref 或 out参数时。
当您想通过单个参数将多个值传递给方法时。
当您想暂时保存数据库记录或某些值而不创建单独的类时。。

元组缺点:

Tuple是一个引用类型,而不是一个值类型。它在堆上分配,并可能导致CPU密集型操作。
Tuple被限制为包括八个元素。如果需要存储更多元素,则需要使用嵌套元组。但是,这可能导致歧义。

相关视频:https://www.bilibili.com/video/BV1M84y1A7dp/

相关内容

热门资讯

【MySQL】锁 锁 文章目录锁全局锁表级锁表锁元数据锁(MDL)意向锁AUTO-INC锁...
【内网安全】 隧道搭建穿透上线... 文章目录内网穿透-Ngrok-入门-上线1、服务端配置:2、客户端连接服务端ÿ...
GCN的几种模型复现笔记 引言 本篇笔记紧接上文,主要是上一篇看写了快2w字,再去接入代码感觉有点...
数据分页展示逻辑 import java.util.Arrays;import java.util.List;impo...
Redis为什么选择单线程?R... 目录专栏导读一、Redis版本迭代二、Redis4.0之前为什么一直采用单线程?三、R...
【已解决】ERROR: Cou... 正确指令: pip install pyyaml
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
Lock 接口解读 前置知识点Synchronized synchronized 是 Java 中的关键字,...
Win7 专业版安装中文包、汉... 参考资料:http://www.metsky.com/archives/350.htm...
3 ROS1通讯编程提高(1) 3 ROS1通讯编程提高3.1 使用VS Code编译ROS13.1.1 VS Code的安装和配置...
大模型未来趋势 大模型是人工智能领域的重要发展趋势之一,未来有着广阔的应用前景和发展空间。以下是大模型未来的趋势和展...
python实战应用讲解-【n... 目录 如何在Python中计算残余的平方和 方法1:使用其Base公式 方法2:使用statsmod...
学习u-boot 需要了解的m... 一、常用函数 1. origin 函数 origin 函数的返回值就是变量来源。使用格式如下...
常用python爬虫库介绍与简... 通用 urllib -网络库(stdlib)。 requests -网络库。 grab – 网络库&...
药品批准文号查询|药融云-中国... 药品批文是国家食品药品监督管理局(NMPA)对药品的审评和批准的证明文件...
【2023-03-22】SRS... 【2023-03-22】SRS推流搭配FFmpeg实现目标检测 说明: 外侧测试使用SRS播放器测...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
初级算法-哈希表 主要记录算法和数据结构学习笔记,新的一年更上一层楼! 初级算法-哈希表...
进程间通信【Linux】 1. 进程间通信 1.1 什么是进程间通信 在 Linux 系统中,进程间通信...
【Docker】P3 Dock... Docker数据卷、宿主机与挂载数据卷的概念及作用挂载宿主机配置数据卷挂载操作示例一个容器挂载多个目...