Tutorialsteacher

关注我们

文章
  • C#
  • C# 面向对象编程
  • ASP.NET Core
  • ASP.NET MVC
  • LINQ
  • 控制反转 (IoC)
  • Web API
  • JavaScript
  • TypeScript
  • jQuery
  • Angular 11
  • Node.js
  • D3.js
  • Sass
  • Python
  • Go 语言
  • HTTPS (SSL)
  • 正则表达式
  • SQL
  • SQL Server
  • PostgreSQL
  • MongoDB
  • C# - 入门
  • C# - 版本历史
  • C# - 第一个程序
  • C# - 关键词
  • C# - 类和对象
  • C# - 命名空间
  • C# - 变量
  • C# - 隐式类型变量
  • C# - 数据类型
  • 数字
  • 字符串
  • DateTime
  • 结构体
  • 枚举
  • StringBuilder
  • 匿名类型
  • 动态类型
  • 可空类型
  • C# - 值类型和引用类型
  • C# - 接口
  • C# - 运算符
  • C# - if else 语句
  • C# - 三元运算符 ?
  • C# - Switch 语句
  • C# - For 循环
  • C# - While 循环
  • C# - Do-while 循环
  • C# - 分部类
  • C# - Static 关键字
  • C# - 数组
  • 多维数组
  • 交错数组
  • C# - 索引器
  • C# - 泛型
  • 泛型约束
  • C# - 集合
  • ArrayList
  • List
  • SortedList
  • Dictionary
  • Hashtable
  • Stack
  • Queue
  • C# - 元组 (Tuple)
  • C# - 值元组 (ValueTuple)
  • C# - 内置异常
  • 异常处理
  • throw 关键字
  • 自定义异常
  • C# - 委托
  • Func 委托
  • Action 委托
  • Predicate 委托
  • 匿名方法
  • C# - 事件
  • C# - 协变
  • C# - 扩展方法
  • C# - 流 I/O
  • C# - File 类
  • C# - FileInfo 类
  • C# - 对象初始化器
  • OOP - 概述
  • 面向对象编程
  • 抽象
  • 封装
  • 关联与组合
  • 继承
  • 多态
  • 方法重写
  • 方法隐藏
  • C# - SOLID 原则
  • 单一职责原则
  • 开闭原则
  • 里氏替换原则
  • 接口隔离原则
  • 依赖倒置原则
  • 设计模式
  • 单例模式
  • 抽象工厂模式
  • 工厂方法模式
Entity Framework Extensions - 提升 EF Core 9
  批量插入
  批量删除
  批量更新
  批量合并

C# - 元组 (Tuple)

Tuple<T> 类是在 .NET Framework 4.0 中引入的。元组是一种数据结构,包含不同数据类型元素的序列。它可以在您想要一个数据结构来保存具有属性的对象,但又不想为其创建单独类型的情况下使用。

Tuple<T1, T2, T3, T4, T5, T6, T7, TRest>

以下示例创建了一个包含三个元素的元组

Tuple<int, string, string> person =new Tuple <int, string, string>(1, "Steve", "Jobs");

在上面的示例中,我们创建了一个保存人员记录的 `Tuple` 实例。我们为每个元素指定了类型并向构造函数传递了值。为每个元素指定类型很麻烦。C# 包含一个静态辅助类 `Tuple`,它返回 `Tuple<T>` 的实例,而无需指定每个元素的类型,如下所示。

var person = Tuple.Create(1, "Steve", "Jobs");

元组最多只能包含八个元素。当您尝试包含超过八个元素时,它会给出编译错误。

var numbers = Tuple.Create(1, 2, 3, 4, 5, 6, 7, 8);

访问元组元素

元组元素可以使用 `Item<elementNumber>` 属性访问,例如 Item1、Item2、Item3,依此类推直到 Item7 属性。Item1 属性返回第一个元素,Item2 返回第二个元素,依此类推。最后一个元素(第 8 个元素)将使用 `Rest` 属性返回。

示例:访问元组元素
var person = Tuple.Create(1, "Steve", "Jobs");
person.Item1; // returns 1
person.Item2; // returns "Steve"
person.Item3; // returns "Jobs"


var numbers = Tuple.Create("One", 2, 3, "Four", 5, "Six", 7, 8);
numbers.Item1; // returns "One"
numbers.Item2; // returns 2
numbers.Item3; // returns 3
numbers.Item4; // returns "Four"
numbers.Item5; // returns 5
numbers.Item6; // returns "Six"
numbers.Item7; // returns 7
numbers.Rest; // returns (8)
numbers.Rest.Item1; // returns 8
尝试一下

通常,第 8 个位置用于嵌套元组,您可以使用 `Rest` 属性访问它。

嵌套元组

如果您想在一个元组中包含超过八个元素,您可以通过将另一个元组对象作为第八个元素进行嵌套来实现。最后一个嵌套元组可以使用 `Rest` 属性访问。要访问嵌套元组的元素,请使用 `Rest.Item1.Item<elelementNumber>` 属性。

示例:嵌套元组
var numbers = Tuple.Create(1, 2, 3, 4, 5, 6, 7, Tuple.Create(8, 9, 10, 11, 12, 13));
numbers.Item1; // returns 1
numbers.Item7; // returns 7
numbers.Rest.Item1; //returns (8, 9, 10, 11, 12, 13)
numbers.Rest.Item1.Item1; //returns 8
numbers.Rest.Item1.Item2; //returns 9
尝试一下

您可以将嵌套元组对象包含在序列中的任何位置。但是,建议将嵌套元组放在序列的末尾,以便可以使用 `Rest` 属性访问它。

示例:嵌套元组
var numbers = Tuple.Create(1, 2, Tuple.Create(3, 4, 5, 6, 7,  8), 9, 10, 11, 12, 13 );
numbers.Item1; // returns 1
numbers.Item2; // returns 2
numbers.Item3; // returns (3, 4, 5, 6, 7,  8)
numbers.Item3.Item1; // returns 3
numbers.Item4; // returns 9
numbers.Rest.Item1; //returns 13
尝试一下

元组作为方法参数

方法可以有一个元组作为参数。


    static void Main(string[] args)
{
    var person = Tuple.Create(1, "Steve", "Jobs");
    DisplayTuple(person);
}

static void DisplayTuple(Tuple<int,string,string> person)
{
    Console.WriteLine($"Id = { person.Item1}");
    Console.WriteLine($<span className="str">"First Name = { person.Item2}"</span>);
    Console.WriteLine($<span className="str">"Last Name = { person.Item3}"</span>);
}
尝试一下

元组作为返回类型

元组可以从方法中返回。


static void Main(string[] args)
{
    var person = GetPerson();
}

static Tuple<int, string, string> GetPerson() 
{
    return Tuple.Create(1, "Bill", "Gates");
}
尝试一下

元组的用法

元组可用于以下场景

  1. 当您想从方法返回多个值而无需使用 `ref` 或 `out` 参数时。
  2. 当您想通过单个参数向方法传递多个值时。
  3. 当您想暂时保存数据库记录或某些值而无需创建单独的类时。

元组的限制

  1. `Tuple` 是引用类型而不是值类型。它在堆上分配,可能导致 CPU 密集型操作。
  2. `Tuple` 限制为包含八个元素。如果您需要存储更多元素,则需要使用嵌套元组。然而,这可能会导致歧义。
  3. `Tuple` 元素可以使用具有名称模式 `Item<elementNumber>` 的属性进行访问,这没有意义。

C# 7 包含 ValueTuple 以克服 Tuple 的限制,并使其更易于使用 Tuple。在下一章中了解它。

TUTORIALSTEACHER.COM

TutorialsTeacher.com 是您权威的技术教程来源,旨在通过循序渐进的方法,指导您掌握各种网络和其他技术。

我们的内容旨在帮助所有水平的学习者轻松快速地掌握技术。访问此平台即表示您已阅读并同意遵守我们的使用条款和隐私政策,这些条款和政策旨在保护您的体验和隐私权。

[email protected]

关于我们使用条款隐私政策
copywrite-symbol

2024 TutorialsTeacher.com. (v 1.2) 版权所有。