乐趣区

关于c#:C-tuple元组详解

概念

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

如何申明元组变量(针对.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<T1, T2, T3, T4, T5, T6, T7, TRest>
由下面能够看出 除非是嵌套的元组,一般的最多只能有 8 位元素

如何申明元组变量

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

## 形式二 
Tuple<int, string, double> t2 = new Tuple<int, string, double>(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/

退出移动版