Accessing 2D Array Elements
CoddyのC#ジャーニー「ロジックとフロー」セクションの一部 — レッスン 3/66。
2次元配列の要素にアクセスするには、通常の配列と同様の構文を使用しますが、行と列のそれぞれに1つずつの、2つのインデックスが必要です。
注意: C# には、多次元配列の2種類があります:矩形配列 (int[,]) と ジャグ配列 (int[][]) です。このレッスンでは、各行が独自の配列である ジャグ配列 を扱います。
3行4列のジャグド配列を作成する:
int[][] grid = new int[3][];
grid[0] = new int[4];
grid[1] = new int[4];
grid[2] = new int[4];特定の位置(行インデックス 1、列インデックス 2)に値を割り当てます:
grid[1][2] = 42;特定の位置(行インデックス 0、列インデックス 3)から値を読む:
int value = grid[0][3];インデックスが 0 から始まるため、行インデックス 0 は 1 行目で、列インデックス 3 は 4 列目です。
配列のインデックスは0から始まることを覚えておいてください。有効なインデックス範囲は次のとおりです:
- 行: index 0 to 2 (3行の配列の場合 — 1行目は index 0、2行目は index 1、3行目は index 2)
- 列: index 0 to 3 (4列の配列の場合 — 1列目は index 0、2列目は index 1、以後同様)
grid[3][2])、IndexOutOfRangeException が発生します。チャレンジ
中級getElement という名前のメソッドを書きなさい。このメソッドは 3 つの引数を取ります:
- 2 次元の整数配列(
int[][] matrix) - 行インデックス(
int row) - 列インデックス(
int col)
インデックスが有効な場合に指定された位置の要素を返します。どちらかのインデックスが範囲外の場合は -1 を返します。
チートシート
2次元配列の要素にアクセスするには、2つのインデックスを使用します: [row][column]
2次元配列を作成:
int[][] grid = new int[3][];
grid[0] = new int[4];
grid[1] = new int[4];
grid[2] = new int[4];値を代入:
grid[1][2] = 42;値を読み取り:
int value = grid[0][3];配列のインデックスは 0 から始まります。有効な範囲外の要素にアクセスすると IndexOutOfRangeException がスローされます。
自分で試してみよう
public class GetElement
{
public static int getElement(int[][] array, int row, int col)
{
// ここにコードを記述してください
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety