値タプルの基本
関連するデータをまとめる軽量なタプルを作成します。
「値タプルの基本」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。
タプルとは
tuple は、クラスを定義せずに複数の値を1つの軽量なまとまりにまとめるものです。C# の value tuple では、かっこを使用します: (int, string)。
using System;
class Program
{
static void Main()
{
(int, string) pair = (1, "one");
Console.WriteLine(pair.Item1 + " = " + pair.Item2);
}
}Value tuple を作成する
値をかっこで囲んで記述します。コンパイラーが値からタプルの型を推論します。
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 は書き込み可能なフィールドであるため、value tuple の要素には再代入できます。
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);
}
}タプルを比較する
value tuple は等値比較をサポートしています。対応するすべての要素が等しければ、2つのタプルは等しいと見なされます。
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);
}
}値セマンティクス
value tuple は struct なので、代入すると値がコピーされます。コピーを変更しても元の値には影響しません。
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);
}
}まとめ
value tuple を使うと、型付きの値のまとまりを手軽に作成できます。メソッド内の短期間だけ使うデータや、単純なリストに適しています。
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"));
}
}理解度チェック
value tuple について理解できているか確認しましょう。
まとめ
value tuple は、クラスを使わずに (int, string) のようなかっこ付きの構文で複数の値をまとめます。名前のない要素には Item1、Item2 からアクセスします。タプルは値セマンティクスを持つ変更可能な構造体で、等値比較をサポートします。手軽なローカルの値のまとまりに適しています。
using System;
class Program
{
static void Main()
{
var t = (1, "one", true);
Console.WriteLine(t.Item1 + " " + t.Item2 + " " + t.Item3);
}
}よくある質問
「値タプルの基本」レッスンは無料ですか?
はい。「値タプルの基本」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。
「値タプルの基本」で何を学びますか?
関連するデータをまとめる軽量なタプルを作成します。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C# Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「値タプルの基本」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC# Academyレッスンでコードを書いて実行できますか?
はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 値タプルの基本
- 名前付きタプル要素
- 分解
- メソッドの戻り値としてのタプル