惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
博客园_首页
IT之家
IT之家
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Vercel News
Vercel News
美团技术团队
D
Docker
WordPress大学
WordPress大学
T
Tailwind CSS Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
The Cloudflare Blog
Y
Y Combinator Blog
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
G
Google Developers Blog
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
月光博客
月光博客
MongoDB | Blog
MongoDB | Blog
S
SegmentFault 最新的问题
GbyAI
GbyAI
Hugging Face - Blog
Hugging Face - Blog
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans

博客园 - z5337

【转】禁用 Chrome 浏览器的自动更新 【转】Avalonia 12 最小信创项目模板 【转】Avalonia 周边介绍 【转】国产操作系统对 Avalonia 的支持情况 【转】国产操作系统优化篇 [openKylin] 入门知识点 【转】国产操作系统优化篇 [openKylin] 第一步 - Qt + VMware 【转】p2055dn 打印机配置 IP 地址 【转】Windows 锁屏后屏幕不熄灭排查 【转】既然 java 8 因为组件容易被攻击,.net core 也有大量第三方组件,是不是也容易出问题 【转】最小 web api 学习 【转】使用记事本区分图片格式 【转】蓝牙耳机的播放控制 【转】JoyToKey 键位映射 【转】[C#] 要从接口取时间,单个订单查询和批量查询,写一个接口还是两个接口合适? 【转】[C#] Web API 中的常见层次 【转】[C#] .net core 项目的目标框架设置 【转】[C#] 项目里的配置文件与选项对比 【转】[C#] GlobalUsing 的使用 【转】[.net core] 项目的 Windows 服务器部署 【转】《三字经》全文 【转】[IDEA] 调试时怎么判断使用哪个配置文件 【转】PO、DO、VO、BO、DTO、DAO、POJO 的区别 【转】[web]怎么移除网页最上层的水印 【转】[C#] 30+个.NET开发最佳实践 【转】[C#] WPF 保留选中的高亮色 【转】Windows Server 系统的桌面上显示 此电脑 图标 【转】[C#] 参数前加 in 的作用 【转】[C#] Enum 的 Flags 特性 【转】[C#] Record 的使用 【转】[C#] 预处理指令
【转】[C#] Tuples 元组介绍
z5337 · 2025-07-25 · via 博客园 - z5337

image

以下转自:豆包

在 C# 中,元组(Tuples) 是一种轻量级的数据结构,用于将多个值组合成一个单一的对象。它们提供了简洁的语法来处理临时数据集合,无需定义专门的类或结构。以下是关于 C# 元组的详细介绍:

元组是一种值类型(ValueTuple),允许存储不同类型的多个值。它们有两种主要形式:

  • 匿名元组:使用隐式名称(如Item1Item2等)。
  • 命名元组:为每个元素指定名称,提高可读性。

使用括号直接创建:

var person = ("John", 30, "New York");  

为元素指定名称:

var person = (Name: "Alice", Age: 25, City: "London");
var numbers = new ValueTuple<int, string>(1, "one");
var coords = (10, 20);
int x = coords.Item1;  
var person = (Name: "Bob", Age: 40);
string name = person.Name;  

将元组的元素直接赋值给变量:

var point = (X: 5, Y: 10);
var (x, y) = point;  

忽略不需要的元素:

var (first, _, third) = (1, 2, 3);  
public (string Name, int Age) GetPerson()
{
    return ("Charlie", 35);
}

public void PrintPerson((string Name, int Age) person)
{
    Console.WriteLine($"{person.Name}, {person.Age}");
}

元组的相等性基于元素的值和顺序:

var t1 = (1, "a");
var t2 = (1, "a");
Console.WriteLine(t1 == t2);  
特性元组(Tuples)类 / 结构(Class/Struct)
语法复杂度 简洁,无需定义类型 需要显式定义类或结构
成员访问 通过名称或ItemN 通过属性或字段
用途 临时数据集合 定义具有行为和状态的类型
命名要求 可选(命名元组) 必须定义成员名称
不可变性 默认可变(可重新赋值) 需手动实现不可变属性
  1. 元组是值类型:存储在栈上,适合轻量级数据。
  2. 元素数量限制:最多支持 8 个元素。超过 8 个时,需使用嵌套元组或ValueTuple的构造函数。
  3. 命名元组的兼容性:命名仅在编译时存在,运行时会被忽略(除非使用System.Runtime.CompilerServices.TupleElementNamesAttribute)。
  4. 性能考虑:对于复杂数据模型或需要继承 / 多态的场景,建议使用类或结构。
  • 从方法返回多个值:避免使用out参数。
  • 临时数据集合:如在 LINQ 查询中分组数据。
  • 简化代码:减少为简单数据创建专门类型的开销。
public (int Sum, int Product) Calculate(int a, int b)
{
    return (a + b, a * b);
}

元组是 C# 中处理临时数据集合的高效方式,尤其适合简化方法返回值和参数传递。它们通过简洁的语法减少了样板代码,但对于复杂场景仍需使用类或结构。掌握元组可以提高代码的可读性和开发效率。