值元组基础
为分组数据创建轻量级元组。
值元组基础 是 CoddyKit 上的免费 C# Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C# Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C# Academy 课程共包含 4 节课。
什么是元组
元组可以将多个值组合成一个轻量的数据包,而无需定义类。C# 值元组使用圆括号:(int, string)。
using System;
class Program
{
static void Main()
{
(int, string) pair = (1, "one");
Console.WriteLine(pair.Item1 + " = " + pair.Item2);
}
}创建值元组
将值写在圆括号中。编译器会根据这些值推断元组类型。
using System;
class Program
{
static void Main()
{
var point = (3, 4);
Console.WriteLine("x=" + point.Item1 + ", y=" + point.Item2);
}
}访问元素:Item1、Item2
未命名的元组元素按顺序通过 Item1、Item2、Item3 等访问。
using System;
class Program
{
static void Main()
{
var rgb = (255, 128, 0);
Console.WriteLine("R=" + rgb.Item1 + " G=" + rgb.Item2 + " B=" + rgb.Item3);
}
}元组可以包含混合类型
每个元素都可以是不同的类型。元组可以混合数字、字符串、布尔值等。
using System;
class Program
{
static void Main()
{
var user = ("Ada", 36, true);
Console.WriteLine(user.Item1 + ", age " + user.Item2 + ", active=" + user.Item3);
}
}元组是可变的
值元组的元素可以重新赋值,因为每个 ItemN 都是可写字段。
using System;
class Program
{
static void Main()
{
var score = (player: "A", points: 0);
score.points = 10;
score.points += 5;
Console.WriteLine(score.player + ": " + score.points);
}
}元组作为局部数据包
元组非常适合在方法内部临时组合多个值,而无需创建专用类型。
using System;
class Program
{
static void Main()
{
var range = (min: 5, max: 50);
int span = range.max - range.min;
Console.WriteLine("Span: " + span);
}
}比较元组
值元组支持相等比较:当所有对应元素都相等时,两个元组相等。
using System;
class Program
{
static void Main()
{
var a = (1, 2);
var b = (1, 2);
var c = (1, 3);
Console.WriteLine(a == b);
Console.WriteLine(a == c);
}
}嵌套元组
元组元素本身也可以是元组,从而构建小型的结构化数据组。
using System;
class Program
{
static void Main()
{
var line = (start: (0, 0), end: (3, 4));
Console.WriteLine("From " + line.start.Item1 + "," + line.start.Item2 +
" to " + line.end.Item1 + "," + line.end.Item2);
}
}集合中的元组
您可以将元组存储在列表中,在不创建类的情况下将成对的数据放在一起。
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var scores = new List<(string, int)>
{
("Ann", 90),
("Bob", 85)
};
foreach (var s in scores)
Console.WriteLine(s.Item1 + ": " + s.Item2);
}
}值语义
值元组是一个结构体,因此赋值时会复制其中的值。修改副本不会影响 original(原始值)。
using System;
class Program
{
static void Main()
{
var original = (n: 1);
var copy = original;
copy.n = 99;
Console.WriteLine("original=" + original.n + ", copy=" + copy.n);
}
}综合运用
值元组可以快速创建带类型的数据组,非常适合在方法内部或简单列表中保存短期数据。
using System;
class Program
{
static void Main()
{
var result = (count: 3, total: 150);
double average = (double)result.total / result.count;
Console.WriteLine("Average: " + average.ToString("0.0"));
}
}快速检查
请测试您对值元组的理解。
回顾
值元组可以像 (int, string) 这样用圆括号组合多个值,而无需创建类。未命名元素通过 Item1、Item2 访问。元组是具有值语义的可变结构体,并支持相等比较。它们非常适合快速创建局部数据组。
using System;
class Program
{
static void Main()
{
var t = (1, "one", true);
Console.WriteLine(t.Item1 + " " + t.Item2 + " " + t.Item3);
}
}常见问题解答
「值元组基础」课时是免费的吗?
是的 — 「值元组基础」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C# Academy 课程的其余内容,请升级到 CoddyKit PRO。 C# Academy 课程共包含 4 节课。
「值元组基础」这节课中我会学到什么?
为分组数据创建轻量级元组。 你通过在浏览器中直接运行的动手代码来练习 C# Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 C# Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 C# Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「值元组基础」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 C# Academy 课中编写并运行代码吗?
能。每节 C# Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 值元组基础
- 命名元组元素
- 解构
- 将元组作为方法返回值