English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
변수는 문자面上的 값을 저장하는 데 사용되며, 배열은 여러 문자面上的 값을 저장하는 데 사용됩니다.
배열은 동일한 데이터 타입의 고정된 수의 텍스트 값(요소)을 저장하는 데이터 구조입니다. 배열 요소는 메모리에서 연속적으로 저장됩니다.
C#에서 배열은 일维 배열, 다维 배열 및 점프 배열 세 가지 유형으로 나뉩니다. 여기서는 일维 배열에 대해 배울 것입니다.
아래 그림은 배열 표현 형식을 설명합니다.
배열의 요소 타입을 지정하기 위해 괄호를 사용하여 배열을 선언할 수 있습니다.
int[] evenNums; // 정수 배열 string[] cities; // 문자열 배열
다음 문장은 단일 문장에서 선언하고 배열에 값을 추가합니다.
int[] evenNums = new int[5]{ 2, 4, 6, 8, 10 }; string[] cities = new string[3]{ "Mumbai", "London", "New York" };
위에서 evenNums 배열은 최대로 다섯 개의 정수를 저장할 수 있습니다. new int[5] 괄호 내의 숫자 5 은 배열의 크기를 지정합니다. 마찬가지로 cities 배열의 크기는3배열 요소는 콤마로 구분된 목록으로 대括호 {}에 추가됩니다.
배열 타입 변수는 괄호 [] 없이 var로 선언할 수 있습니다.
var evenNums = new int[]{ 2, 4, 6, 8, 10}; var cities = new string[]{ "Mumbai", "London", "New York" };
배열 요소를 추가할 때 size는 선택사항입니다. 컴파일러는 괄호 내의 요소 수에 따라 크기를 추론합니다.
int[] evenNums = { 2, 4, 6, 8, 10}; string[] cities = { "Mumbai", "London", "New York" }
다음 예제에서 무효한 배열 선언을 보여줍니다.
//크기를 지정해야 합니다 int[] evenNums = new int[]; //요소 수는 지정된 크기와 일치해야 합니다 int[] evenNums = new int[5] { 2, 4 }; //var와 배열 초기화 프로그램을 함께 사용할 수 없습니다 var evenNums = { 2, 4, 6, 8, 10};
배열을 단일 문장에서 선언하고 초기화할 필요가 없습니다. 먼저 배열을 선언한 후 new 연산자를 사용하여 초기화할 수 있습니다.
int[] evenNums; evenNums = new int[5]; // 또는 evenNums = new int[]{ 2, 4, 6, 8, 10 };
인덱스를 사용하여 배열 요소에 접근할 수 있습니다. 인덱스는 각 배열 요소와 연결된 숫자로, 인덱스 0에서 배열 크기까지입니다-1 끝.
다음 예제에서 인덱스를 사용하여 추가/업데이트 및 배열 요소 검색.
int[] evenNums = new int[5]; evenNums[0] = 2; evenNums[1] = 4; //evenNums[6] = 12; //발생시키는 시간 내부 예외 IndexOutOfRange Console.WriteLine(evenNums[0]); //출력 2 Console.WriteLine(evenNums[1]); //출력 4
주의하세요, 배열의 지정된 크기를 초과하여 요소를 추가하려고 할 때는 IndexOutOfRangeException 예외가 발생합니다.
for 루프를 사용하여 배열 요소에 접근합니다. for 루프의 조건 표현式中 배열의 length 속성을 사용합니다.
int[] evenNums = { 2, 4, 6, 8, 10 }; for(int i = 0; i < evenNums.Length; i++){ Console.WriteLine(evenNums[i]); } for(int i = 0; i < evenNums.Length; i++){ evenNums[i] = evenNums[i] + 10; // 각 요소의 값을 업데이트10 }
foreach 루프를 사용하여 배열 요소의 값을 인덱스 없이 읽을 수 있습니다.
int[] evenNums = { 2, 4, 6, 8, 10}; string[] cities = { "Mumbai", "London", "New York" }; foreach(var item in evenNums){ Console.WriteLine(item); } foreach(var city in cities){ Console.WriteLine(city); }
C#의 모든 배열은 System.Array抽象 기본 클래스에서 파생됩니다.
Array 클래스는 IEnumerable 인터페이스를 구현했으므로 Max(), Min(), Sum(), reverse() 등과 같은 LINQ 확장 메서드를 사용할 수 있습니다.
int[] nums = new int[5]{ 10, 15, 16, 8, 6 }; nums.Max(); // 반환16 nums.Min(); // 반환6 nums.Sum(); // 반환55 nums.Average(); // 반환55
System.Array 클래스는 배열을 생성,操作, 검색 및 정렬하는 메서드를 포함하고 있습니다.
int[] nums = new int[5]{ 10, 15, 16, 8, 6 }; Array.Sort(nums); // 배열을 정렬 Array.Reverse(nums); // 배열을 내림차순으로 정렬 Array.ForEach(nums, n => Console.WriteLine(n)); // 배열을 반복 Array.BinarySearch(nums, 5);// 이진 검색
배열을 메서드 매개변수로 전달할 수 있습니다. 배열은 참조형 타입이므로 이 메서드는 배열 요소의 값을 변경할 수 있습니다.
public static void Main(){ int[] nums = { 1, 2, 3, 4, 5 }; UpdateArray(nums); foreach(var item in nums) Console.WriteLine(item); } public static void UpdateArray(int[] arr) { for(int i = 0; i < arr.Length;++) arr[i] = arr[i] + 10; }