0Pricing
C# Academy · 课时

值元组基础

为分组数据创建轻量级元组。

值元组基础 是 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 值元组基础
  2. 命名元组元素
  3. 解构
  4. 将元组作为方法返回值
← 返回 C# Academy