インデックスと長さ
要素に安全にアクセスします。
「インデックスと長さ」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。
インデックスによる読み取り
配列の各要素には、インデックスと呼ばれる位置があります。配列名の後に角括弧でインデックスを指定すると、値を読み取れます。
インデックスは 0 から始まるため、最初の要素のインデックスは 0 です。
string[] days = { "Mon", "Tue", "Wed" };
Console.WriteLine(days[0]); // Mon0始まりの数え方
インデックスは0から始まるため、2番目の要素はインデックス1、3番目の要素はインデックス2です。
この0始まりの数え方は初心者が混乱しやすいので、「インデックス = 位置 - 1」と覚えておいてください。
string[] days = { "Mon", "Tue", "Wed" };
Console.WriteLine(days[1]); // Tue
Console.WriteLine(days[2]); // Wed要素の変更
インデックスに新しい値を代入すると、任意の要素を上書きできます。
ここではインデックス1の値を置き換えています。配列の長さは変わらず、保存されている値だけが変わります。
int[] nums = { 5, 6, 7 };
nums[1] = 99;
Console.WriteLine(nums[1]); // 99Lengthプロパティ
すべての配列には、保持している要素数を示すLengthプロパティがあります。
自分でサイズを覚えておく必要がないため便利です。
int[] nums = { 5, 6, 7, 8 };
Console.WriteLine(nums.Length); // 4最後の要素
数え始めるのが0だから、最後の有効なインデックスは常にLength - 1です。
Length - 1を使えば、数値を直接指定しなくても最後の要素を見つけられます。
int[] nums = { 5, 6, 7, 8 };
Console.WriteLine(nums[nums.Length - 1]); // 8末尾からのインデックス演算子
C#では、^演算子を使って末尾から数えるためのショートカットを利用できます。^1は最後の要素、^2は最後から2番目の要素を意味します。
Length - 1と書かずに末尾の要素を取得できる、すっきりした方法です。
int[] nums = { 5, 6, 7, 8 };
Console.WriteLine(nums[^1]); // 8完全なプログラム
この完全なプログラムは、最初の要素、最後の要素、そして全体の長さを出力します。
実行して、3つの値がすべて表示されることを確認してください。
int[] nums = { 10, 20, 30 };
Console.WriteLine("First: " + nums[0]);
Console.WriteLine("Last: " + nums[nums.Length - 1]);
Console.WriteLine("Count: " + nums.Length);範囲外エラー
大きすぎるインデックスや負のインデックスを使うと、C#はIndexOutOfRangeExceptionをスローし、プログラムがクラッシュします。
長さ3の配列で有効なインデックスは0、1、2だけです。インデックス3は1つ先に進みすぎています。
int[] nums = { 1, 2, 3 };
// nums[3] would throw IndexOutOfRangeException
Console.WriteLine(nums[2]); // safe: 3アクセス前のチェック
クラッシュを避けるには、インデックスを使う前に範囲内にあることを確認してください。
安全なインデックスは0以上で、Length未満でなければなりません。
int[] nums = { 1, 2, 3 };
int i = 5;
if (i >= 0 && i < nums.Length)
Console.WriteLine(nums[i]);
else
Console.WriteLine("Out of range");Lengthを計算に使う
Lengthは単なる整数なので、中央のインデックスを求めるなど、計算に使えます。
ここでは配列の中央の位置を計算しています。
int[] nums = { 1, 2, 3, 4, 5 };
int mid = nums.Length / 2;
Console.WriteLine(nums[mid]); // 3Lengthは読み取り専用
配列のサイズを変更するためにLengthを変えることはできません。配列は作成後のサイズが固定されています。
別のサイズが必要な場合は、新しい配列を作成します。サイズを増やす必要がある場合は、List<T>のようなコレクションのほうが適しています。
int[] nums = { 1, 2, 3 };
// nums.Length = 5; // error: read-only
Console.WriteLine(nums.Length); // 3確認問題
インデックスと長さについての理解度を確認しましょう。
まとめ
インデックスを使って要素を読み取ったり変更したりする方法、インデックスが0始まりであること、そして最後のインデックスがLength - 1であることを学びました。
Lengthプロパティは要素数を数え、^演算子は末尾から数えます。範囲外にアクセスすると例外がスローされます。次は、すべての要素をループします。
よくある質問
「インデックスと長さ」レッスンは無料ですか?
はい。「インデックスと長さ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。
「インデックスと長さ」で何を学びますか?
要素に安全にアクセスします。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C# Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「インデックスと長さ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC# Academyレッスンでコードを書いて実行できますか?
はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。