Declaring and Initializing 2D
Coddy C# 여정의 논리 및 흐름 섹션에 포함된 레슨 — 66개 중 2번째.
C#에서 2차원 배열은 배열의 배열인 가변 배열을 사용하여 생성할 수 있으며, 이를 통해 격자 형태의 구조에 데이터를 저장할 수 있습니다.
3행 4열의 정수 가변 배열을 생성하려면:
int[][] grid = new int[3][];
grid[0] = new int[4];
grid[1] = new int[4];
grid[2] = new int[4];위의 코드는 다음과 같이 보이는 2D 배열을 생성합니다 (모든 요소가 0으로 초기화됨):
[0, 0, 0, 0]
[0, 0, 0, 0]
[0, 0, 0, 0]값으로 가변 배열을 초기화:
int[][] matrix = new int[2][];
matrix[0] = new int[] {1, 2, 3};
matrix[1] = new int[] {4, 5, 6};이는 2행 3열의 2차원 배열을 생성하며, 다음 값을 포함합니다:
[1, 2, 3]
[4, 5, 6]행과 열의 수를 얻으려면:
int rows = matrix.Length; // Returns 2
int columns = matrix[0].Length; // Returns 3 (for the first row)2D 배열에서 요소에 접근하려면 행에 대한 인덱스 하나와 열에 대한 인덱스 하나, 총 두 개의 인덱스가 필요합니다.
특정 위치(행 1, 열 2)에 값을 할당:
grid[1][2] = 42;특정 위치(행 0, 열 3)에서 값을 읽기:
int value = grid[0][3];배열 인덱스는 0부터 시작한다는 것을 기억하세요. 따라서 유효 범위는 다음과 같습니다:
- 행: 0에서 2 (3행 배열의 경우)
- 열: 0에서 3 (4열 배열의 경우)
이 범위를 벗어나는 요소에 접근하려고 하면 (예: grid[3][2]), IndexOutOfRangeException이 발생합니다.
치트 시트
C#에서 가변 배열(2D 배열) 생성:
int[][] grid = new int[3][];
grid[0] = new int[4];
grid[1] = new int[4];
grid[2] = new int[4];값으로 초기화:
int[][] matrix = new int[2][];
matrix[0] = new int[] {1, 2, 3};
matrix[1] = new int[] {4, 5, 6};차원 가져오기:
int rows = matrix.Length; // Number of rows
int columns = matrix[0].Length; // Number of columns in first row두 개의 인덱스 [row][column]을 사용하여 요소 접근:
grid[1][2] = 42; // Assign value
int value = grid[0][3]; // Read value배열 인덱스는 0부터 시작합니다. 범위를 벗어난 인덱스에 접근하면 IndexOutOfRangeException이 발생합니다.
직접 해보기
이 레슨에는 코드 챌린지가 없습니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리 및 흐름의 모든 레슨
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