연습 - 배열 기본 사항 시작
- 19분
배열을 사용하여 동일한 형식의 여러 값을 단일 변수에 저장할 수 있습니다. 배열에 저장된 값은 일반적으로 관련이 있습니다. 예를 들어 학생 이름 목록을 students라는 문자열 배열에 저장할 수 있습니다.
보안 부서의 작업은 사기성 주문 패턴을 찾는 데 중점을 두고 있습니다. 코드에서 과거 고객 주문을 검토하고 사기성 주문과 관련된 표식을 식별하려고 합니다. 회사는 표식을 사용하여 처리되기 전에 향후 잠재적인 사기성 구매 주문을 식별할 수 있기를 바랍니다. 검토해야 하는 주문의 개수를 항상 미리 알 수 있는 것은 아니므로 각 주문 ID를 포함할 개별 변수를 만들 수 없습니다. 여러 관련 값을 포함할 데이터 구조를 만들려면 어떻게 해야 할까요?
이 연습에서는 배열을 사용하여 주문 ID 컬렉션을 저장하고 분석합니다.
배열이란?
배열은 하나의 변수 이름을 통해 액세스할 수 있는 개별 데이터 요소의 컬렉션입니다. 0부터 시작하는 숫자 인덱스를 사용하여 배열의 각 요소에 액세스합니다. 배열을 사용하면 공통된 목적이나 특성을 공유하는 데이터 값의 컬렉션을 단일 변수 이름으로 만들어 더 쉽게 처리할 수 있습니다.
배열 선언 및 배열 요소 액세스
배열은 동일한 데이터 형식의 여러 값을 보유할 수 있는 특수한 형식의 변수입니다. 배열의 경우, 데이터 형식과 배열의 크기를 모두 지정해야 하므로 선언 구문이 약간 다릅니다.
코딩 환경 준비
이 모듈에는 샘플 코드를 빌드하고 실행하는 과정을 안내하는 작업이 포함되어 있습니다. Visual Studio Code를 개발 환경으로 사용하여 이러한 활동을 완료하는 것이 좋습니다. 이러한 활동에 Visual Studio Code를 사용하면 전 세계 전문가가 사용하는 개발자 환경에서 코드를 더 편안하게 작성하고 실행할 수 있습니다.
Visual Studio Code를 엽니다.
Windows 시작 메뉴(또는 다른 OS의 해당 리소스)를 사용하여 Visual Studio Code를 열 수 있습니다.
Visual Studio Code의 파일 메뉴에서 폴더 열기를 선택합니다.
폴더 열기 대화 상자에서 Windows 바탕 화면 폴더로 이동합니다.
코드 프로젝트를 유지하는 다른 폴더 위치가 있는 경우 해당 폴더 위치를 대신 사용할 수 있습니다. 이 학습에서는 쉽게 기억하고 찾을 수 있는 위치를 사용하는 것이 중요합니다.
폴더 열기 대화 상자에서 폴더 선택을 선택합니다.
작성자를 신뢰하는지 묻는 보안 대화 상자가 표시되면 예를 선택합니다.
Visual Studio Code 터미널 메뉴에서 새 터미널을 선택합니다.
터미널 패널의 명령 프롬프트에 현재 폴더의 폴더 경로가 표시됩니다. 예를 들면 다음과 같습니다.
C:\Users\someuser\Desktop>참고
샌드박스 또는 호스트된 환경이 아닌 자체 PC에서 작업하고 이 C# 시리즈에서 다른 Microsoft Learn 모듈을 완료한 경우 이미 코드 샘플용 프로젝트 폴더를 만들었을 수 있습니다. 이 경우 TestProject 폴더에 콘솔 앱을 만드는 데 사용되는 다음 단계를 건너뛸 수 있습니다.
터미널 명령 프롬프트에서 지정된 폴더에 새 콘솔 애플리케이션을 만들려면 다음 프롬프트를 입력합니다.
dotnet new console -o ./CsharpProjects/TestProject이 .NET CLI 명령은 .NET 프로그램 템플릿을 사용하여 지정된 폴더 위치에 새 C# 콘솔 애플리케이션 프로젝트를 만듭니다. 이 명령은 CsharpProjects 및 TestProject 폴더를 만들고 TestProject를
.csproj파일의 이름으로 사용합니다.파일이 이미 있다는 메시지가 표시되면 다음 단계를 계속 진행합니다. 기존 프로젝트 파일을 다시 사용합니다.
탐색기 보기에서 CsharpProjects 폴더를 확장합니다 .
TestProject 폴더와 두 개의 파일, 즉 Program.cs C# 프로그램 파일과 TestProject.csproj라는 C# 프로젝트 파일이 표시됩니다.
Visual Studio Code의 파일 메뉴에서 폴더 열기를 선택합니다.
폴더 열기 대화 상자에서 CsharpProjects 폴더를 선택한 다음 폴더 선택을 선택합니다.
탐색기 보기에서 TestProject 폴더를 확장한 다음 , Program.cs 선택합니다.
기존 코드 줄을 삭제합니다.
이 모듈 중에 이 C# 콘솔 프로젝트를 사용하여 코드 샘플을 만들고, 빌드하고, 실행합니다.
터미널 패널을 닫습니다.
새 배열 선언
세 개 요소를 포함할 수 있는 새 문자열 배열을 선언하려면 다음 코드를 입력합니다.
string[] fraudulentOrderIDs = new string[3];잠시 시간을 내어 업데이트를 검토합니다.
new연산자는 세 개의 문자열 값을 포함할 수 있는 배열의 새 인스턴스를 컴퓨터의 메모리에 만듭니다.new키워드에 관한 자세한 내용은 “C#을 사용하는 .NET 클래스 라이브러리에서 메서드 호출하기” 모듈을 참조하세요.첫 번째 대괄호 세트
[]는fraudulentOrderIDs라는 변수가 배열임을 컴파일러에 알려 주지만, 두 번째 대괄호 세트[3]는 배열에 포함할 수 있는 요소 개수를 나타냅니다.참고
이 예제에서는 문자열 배열을 선언하는 방법을 보여 주지만,
int및bool과 같은 기본 형식뿐만 아니라 클래스 같은 더 복잡한 데이터 형식을 비롯한 모든 데이터 형식의 배열을 만들 수 있습니다. 이 예제에서는 간단한 문자열을 사용하여 시작단계에서 이해해야 할 새 개념을 최소화하겠습니다.
배열의 요소에 값 할당
이 시점에서 문자열 배열을 선언했지만, 배열의 각 요소는 비어 있습니다. 배열의 요소에 액세스하려면 대괄호 안에 숫자 0부터 시작하는 인덱스를 사용합니다. 일반 변수인 것처럼 =을 사용하여 배열 요소에 값을 할당할 수 있습니다.
fraudulentOrderIDs배열에 주문 ID 값을 할당하려면 다음과 같이 코드를 업데이트합니다.string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789";잠시 시간을 내어 업데이트를 검토합니다.
배열 이름을 사용하여 배열 요소에 액세스하고 있습니다. 각 요소는 대괄호 안에 0부터 시작하는 인덱스 번호를 지정하여 개별적으로 액세스됩니다.
배열이 문자열로 선언되므로 할당하는 값도 문자열이어야 합니다. 이 시나리오에서는 배열의 요소에 주문 ID를 할당합니다.
배열의 경계를 벗어난 인덱스 사용 시도
처음에는 직관적으로 보이지 않을 수도 있지만, 배열에 요소의 개수를 선언하는 중임을 기억하는 것이 중요합니다. 하지만 0으로 시작하는 배열의 각 요소에 액세스합니다. 따라서 배열의 두 번째 항목에 액세스하려면 인덱스 1을 사용합니다.
초보자들이 배열이 0부터 시작한다는 것을 잊고 존재하지 않는 배열의 요소에 액세스하려고 시도하는 것은 흔한 일입니다. 이런 실수를 저지르면 배열의 경계 외부에 있는 요소에 액세스하려고 시도했음을 알려 주는 런타임 예외가 발생합니다.
애플리케이션을 의도적으로 “중단”하려면 인덱스 값 3을 사용하여 배열의 네 번째 요소에 액세스를 시도합니다.
코드 파일의 맨 아래에 다음 코드 줄을 입력합니다.
fraudulentOrderIDs[3] = "D000";코드가 다음 예제와 일치하는지 확인합니다.
string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; fraudulentOrderIDs[3] = "D000";Visual Studio Code 파일 메뉴에서 저장을 선택합니다.
탐색기 보기에서 TestProject 폴더 위치에서 터미널을 열려면 TestProject를 마우스 오른쪽 단추로 클릭한 다음 통합 터미널에서 열기를 선택합니다.
터미널 패널이 열려 있어야 하고 터미널이 TestProject 폴더 위치에 열려 있음을 보여 주는 명령 프롬프트를 포함해야 합니다.
터미널 명령 프롬프트에서 코드를 컴파일하려면
dotnet build를 입력한 다음, Enter 키를 누릅니다.등록이 진행 중일 때는 다음 메시지가 표시되어야 합니다.
Build succeeded. 0 Warning(s) 0 Error(s)터미널 명령 프롬프트에서 코드를 실행하려면
dotnet run을 입력한 다음, Enter 키를 누릅니다.앱을 실행하면 다음 런타임 오류 메시지가 표시됩니다.
Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array. at Program.<Main>$(String[] args) in C:\Users\someuser\Desktop\CsharpProjects\TestProject\Program.cs:line 6오류의 다음 부분을 확인합니다.
- 오류 메시지:
System.IndexOutOfRangeException: Index was outside the bounds of the array. - 오류 위치:
Program.cs:line 6
- 오류 메시지:
런타임 오류를 생성한 줄을 주석으로 처리합니다.
// fraudulentOrderIDs[3] = "D000";
배열 요소에 값을 할당하는 방법을 살펴보았습니다. 이제 배열 요소에 저장되는 값에 액세스하는 방법을 살펴봅니다.
배열 요소에서 값 검색
배열 요소의 값에 액세스하는 것은 배열 요소에 값을 할당하는 것과 동일한 방식으로 작동합니다. 값을 검색하려는 요소의 인덱스를 지정하면 됩니다.
각 사기성 주문 ID의 값을 작성하려면 다음과 같이 코드를 업데이트합니다.
string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; // fraudulentOrderIDs[3] = "D000"; Console.WriteLine($"First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"Second: {fraudulentOrderIDs[1]}"); Console.WriteLine($"Third: {fraudulentOrderIDs[2]}");Visual Studio Code 파일 메뉴에서 저장을 선택합니다.
탐색기 보기에서 TestProject 폴더 위치에서 터미널을 열려면 TestProject를 마우스 오른쪽 단추로 클릭한 다음 통합 터미널에서 열기를 선택합니다.
터미널 명령 프롬프트에서
dotnet run을 입력한 다음, Enter 키를 누릅니다.등록이 진행 중일 때는 다음 메시지가 표시되어야 합니다.
First: A123 Second: B456 Third: C789
배열 값 다시 할당
배열의 요소는 다른 변수 값과 비슷합니다. 배열의 각 요소에 값을 할당, 검색 및 다시 할당할 수 있습니다.
코드 파일의 끝부분에서 첫 번째 배열 요소의 값을 다시 할당한 후 출력하려면 다음 코드를 입력합니다.
fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");코드가 다음 예제와 일치하는지 확인합니다.
string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; // fraudulentOrderIDs[3] = "D000"; Console.WriteLine($"First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"Second: {fraudulentOrderIDs[1]}"); Console.WriteLine($"Third: {fraudulentOrderIDs[2]}"); fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");Visual Studio Code 파일 메뉴에서 저장을 선택합니다.
탐색기 보기에서 TestProject 폴더 위치에서 터미널을 열려면 TestProject를 마우스 오른쪽 단추로 클릭한 다음 통합 터미널에서 열기를 선택합니다.
터미널 명령 프롬프트에서
dotnet run을 입력한 다음, Enter 키를 누릅니다.등록이 진행 중일 때는 다음 메시지가 표시되어야 합니다.
First: A123 Second: B456 Third: C789 Reassign First: F000
배열 초기화
일반 변수와 마찬가지로 선언 중에 배열을 초기화할 수 있습니다.
fraudulentOrderIDs변수를 선언하는 줄을 주석으로 처리합니다.다중 줄 주석(
/* ... */)을 사용하여fraudulentOrderIDs의 선언과 배열 요소에 값을 할당하는 데 사용되는 줄을 주석으로 처리할 수 있습니다.단일 문에서 배열을 선언하고 값을 초기화하려면 다음 코드를 입력합니다.
string[] fraudulentOrderIDs = [ "A123", "B456", "C789" ];이 예제에서는 C# 12에서 도입되었으며 .NET 10에서 지원되는 컬렉션 식 구문을 사용합니다.
배열을 초기화하는 데 사용된 이전 구문을 볼 수도 있습니다.
string[] fraudulentOrderIDs = { "A123", "B456", "C789" };이 이전 구문은 배열의 값을 묶기 위해 중괄호
{}을 사용합니다. 두 구문 모두 유효합니다.참고
이 학습에서는 기존 구문과 컬렉션 식 구문이 결합된 것을 볼 수 있습니다.
코드가 다음 예제와 일치하는지 확인합니다.
/* string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; // fraudulentOrderIDs[3] = "D000"; */ string[] fraudulentOrderIDs = [ "A123", "B456", "C789" ]; Console.WriteLine($"First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"Second: {fraudulentOrderIDs[1]}"); Console.WriteLine($"Third: {fraudulentOrderIDs[2]}"); fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");잠시 시간을 내어 선언 문을 검토합니다.
이 구문은 간결하고 읽기 쉽습니다. 애플리케이션을 실행할 때 출력이 변경되지 않아야 합니다.
Visual Studio Code 파일 메뉴에서 저장을 선택합니다.
탐색기 보기에서 TestProject 폴더 위치에서 터미널을 열려면 TestProject를 마우스 오른쪽 단추로 클릭한 다음 통합 터미널에서 열기를 선택합니다.
터미널 명령 프롬프트에서
dotnet run을 입력한 다음, Enter 키를 누릅니다.이전과 동일한 출력이 표시되어야 합니다.
First: A123 Second: B456 Third: C789 Reassign First: F000
배열의 Length 속성 사용
배열이 생성되는 방법에 따라 배열에 포함된 요소 개수를 미리 알 수 없는 경우도 있습니다. 배열 크기를 확인하기 위해 Length 속성을 사용할 수 있습니다.
참고
배열의 Length 속성은 0부터 시작하지 않습니다.
코드 파일의 끝부분에서 사기성 주문 수를 보고하려면 다음 코드를 입력합니다.
Console.WriteLine($"There are {fraudulentOrderIDs.Length} fraudulent orders to process.");이 코드는 배열의
Length속성(정수)을 사용하여fraudulentOrderIDs배열의 요소 수를 반환합니다.코드가 다음 예제와 일치하는지 확인합니다.
/* string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; // fraudulentOrderIDs[3] = "D000"; */ string[] fraudulentOrderIDs = [ "A123", "B456", "C789" ]; Console.WriteLine($"First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"Second: {fraudulentOrderIDs[1]}"); Console.WriteLine($"Third: {fraudulentOrderIDs[2]}"); fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"There are {fraudulentOrderIDs.Length} fraudulent orders to process.");Program.cs 파일의 변경 내용을 저장한 다음, 애플리케이션을 실행합니다.
다음 출력이 표시됩니다.
First: A123 Second: B456 Third: C789 Reassign First: F000 There are 3 fraudulent orders to process.
요약
배열을 사용할 때 기억해야 할 가장 중요한 사항은 다음과 같습니다.
- 배열은 관련된 데이터 요소의 컬렉션을 보관하는 특수한 변수입니다.
- 배열 변수 선언의 기본 형식을 기억해야 합니다.
- 배열의 각 요소에 액세스하여 대괄호 안에 있는 0부터 시작하는 인덱스를 사용하여 값을 설정하거나 가져옵니다.
- 배열의 경계 외부에 있는 인덱스에 액세스를 시도하면 런타임 예외가 발생합니다.
-
Length속성은 배열에 있는 요소의 개수를 프로그래밍 방식으로 확인하는 방법을 제공합니다.