A. 배열의 선언 및 사용법
int[] array = new int[5];
int sum;
foreach(int score in array)
sum+=score;
int average= sum/array.length();
B. 배열의 초기화방법 3가지
//1번째 : 기본
string[] array1 = new string[3]{"a","b","c"};
//배열 객체를 초기화하는 {}블록을 컬렉션 초기자(Collection Initializer)라고 한다.
//2번째 : 배열의 용량생략
string[] array2 = new string[]{"a","b","c"};
//3번째 : new 연산자, 배열의 용량 모두를 생략
string[] array3 = {"a","b","c"}
* 작성시 3번째 방법이 편하지만, 다른 사람과 공유를 해야할경우 첫번째 방법이 읽기편하다.
C. System.Array 클래스
.NET 프레임워크의 CTS(Common Type System)에서 배열은 System.Array 클래스에 대응된다.
1. System.Array 클래스에서 자주사옹하게 될 메소드와 프로퍼티
분류 | 이름 | 설명 |
정적 메소드 | Sort() | 배열을 정렬한다. |
BinarySearch<T>() | 이진 탐색을 수행한다. | |
IndexOf() | 배열에서 찾고자하는 특정 데이터의 인덱스를 반환한다. | |
TrueForAll<T>() | 배열의 모든 요소가 지정한 조건에 부합하는지 여부를 반환한다. | |
FindIndex<T>() | 배열에서 지정한 조건에 부합하는 첫 번째 요소의 인덱스를 반환한다. IndexOf() 메소드가 특정 값을 찾는데 비해, FindIndex<T>() 메소드는 지정한 조건에 바탕하여 값을 찾는다. |
|
Resize<T>() | 배열의 크기를 재조정한다. | |
Clear() | 배열의 모든 요소를 초기화한다. 배열이 숫자형식 기반이면 0으로, 논리형식 기반이면 False로, 참조형식 기반이면 null로 초기화한다. | |
ForEach<T>() | 배열의 모든 요소에 대해 동일한 작업을 수행한다. | |
인스턴스 메소드 | GetLength() | 배열에서 지정한 차원의 길이를 반환한다. 다차원배열에서 유용하게 사용됨. |
프로퍼티 | Length | 배열의 길이를 반환한다. |
Rank | 배열의 차원을 반환한다. |
* <T>는 형식 매개 변수(Type Parameter)라고 하는데, 이 메소드를 호출할때는 T대신 배열의 기반 자료형을 매개 변수로 입력하면 해당형식에 맞춰 동작하도록 위의 메소드들을 컴파일한다.
class MainApp
{
private static bool CheckPass(int score)
{
if (score >= 60)
return true;
else
return false;
}
private static void Print(int value)
{
Console.Write($"{value} ");
}
static void Main(string[] args)
{
int[] scores = new int[] { 80, 74, 81, 90, 34 };
foreach (int score in scores)
Console.Write($"{score} ");
Console.WriteLine();
Array.Sort(scores);
Array.ForEach<int>(scores, new Action<int>(Print));
Console.WriteLine();
Console.WriteLine($"Number of dimensions : {scores.Rank}");
Console.WriteLine($"Binary Search : 81 is at {Array.BinarySearch<int>(scores, 81)}");
Console.WriteLine($"Linear Search : 90 is at {Array.IndexOf(scores,90)}");
Console.WriteLine($"Everyone passed? :{Array.TrueForAll<int>(scores,CheckPass)}");
int index = Array.FindIndex<int>(scores,
delegate (int score) //**익명메소드는 추후에 문법 정리**
{
if (score < 60)
return true;
else
return false;
});
scores[index] = 61;
Console.WriteLine($"Everyone passed?:{Array.TrueForAll<int>(scores,CheckPass)}");
Console.WriteLine($"Old length of scores : {scores.GetLength(0)}");
Array.Resize<int>(ref scores, 10);//배열의 용량을 재조정해야하므로, 기본배열의 참조형을 매개변수로 준다.
Console.WriteLine($"New length of scores : {scores.GetLength(0)}");
Array.ForEach<int>(scores, new Action<int>(Print)); //**Action 대리자는 추후에 문법정리**
Console.WriteLine();
Array.Clear(scores, 3, 7);
Array.ForEach<int>(scores, new Action<int>(Print));//**Action 대리자는 추후에 문법정리**
Console.WriteLine();
}
}
D. 2차원 배열
- 선언과 초기화
int[ , ] array = new int[2,3]; // [2차원길이],[1차원길이]
//초기화 방법 3가지
int[,] arr = new int[2,3]{{1,2,3},{4,5,6}};
int[,] arr2 = new int[,]{{1,2,3},{4,5,6}};
int[,] arr3 = {{1,2,3},{4,5,6}};
E. 다차원 배열
- 선언과 초기화
int[,,] array = new int[4,3,2]
{
{{1,2},{3,4},{5,6}},
{{1,4},{2,5},{3,6}},
{{6,5},{4,3},{2,1}},
{{6,3},{5,2},{4,1}},
};
F. 가변 배열(Jagged Array)
다양한 길이의 배열을 요소로 가지는 다차원배열로 이용된다.
* 배열의 길이를 늘였다 줄였다 하는것이 아닌, 들쭉날쭉한(Jagged)의 의미로 해석필요.
int[][] jagged = new int[3][];
jagged[0]=new int[5]{1,2,3,4,5}; //0번요소 길이 5
jagged[1]=new int[]{10,20,30};//1번요소 길이 3
jagged[2]=new int[]{100,200}; //2번요소 길이 2
'C# 공부 > C# 기본 문법' 카테고리의 다른 글
인덱서 (인덱서의 선언과 사용, foreach가 가능한 객체 만들기) (0) | 2020.07.26 |
---|---|
컬렉션 (ArrayList, Queue, Stack, Hashtable) (0) | 2020.07.26 |
프로퍼티 - 2 (인터페이스의 프로퍼티, 추상 프로퍼티) (0) | 2020.07.26 |
프로퍼티 - 1 (구현과 사용법, 자동구현 프로퍼티, 프로퍼티와 생성자, 무명형식) (0) | 2020.07.26 |
추상 클래스 (클래스와 인터페이스의 사이) (1) | 2020.07.26 |