C#에서는 모든 타입이 객체이다.
배열도 당연히 객체이며, 기반이되는 클래스는 System.Array 이다.
ForEach<T>()
private static void Print(int value)
{
Console.Write("{0} ", value);
}
private static void PrintArray(int[] arr)
{
Array.ForEach(arr, new Action<int>(Print));
Console.WriteLine();
}
static void Main()
{
int[] arr = {90, 65, 72, 88, 73, 91, 63};
PrintArray(arr);
}
배열의 모든 요소에 동일한 작업을 수행할 수 있다.
Sort(), Reverse()
Array.Sort(arr);
PrintArray(arr);
Array.Reverse(arr);
PrintArray(arr);
63 65 72 73 88 90 91
91 90 88 73 72 65 63
IndexOf(), BinarySearch()
//IndexOf는 LinearSearch
var obj = Array.IndexOf(arr, 88);
Console.WriteLine(obj);
//BinarySearch
obj = Array.BinarySearch<int>(arr, 88);
Console.WriteLine(obj);
3
3
찾고자 하는 원소의 Index를 반환한다.
없으면 -1을 반환.
TrueForAll<T>()
var obj = Array.TrueForAll<int>(arr, (x) => {
if(x > 60) return true;
else return false;
});
Console.WriteLine(obj);
obj = Array.TrueForAll<int>(arr, (x) => {
if(x % 2 == 1) return true;
else return false;
});
Console.WriteLine(obj);
True
False
bool 반환형의 delegate를 넣어준다.
정확히는 Predicate<T> delegate이다.
Find<T>()
var obj = Array.Find<int>(arr, (x) => {
if(x > 60) return true;
else return false;
});
Console.WriteLine(obj);
obj = Array.Find<int>(arr, (x) => {
if(x % 2 == 1) return true;
else return false;
});
Console.WriteLine(obj);
90
65
해당 조건에 만족하는 원소를 찾으면 반환한다.
없다면 0을 반환
비슷한 메소드로, FindIndex<T> 가 있다.
기타
이외에도 너무 많은 메소드가 있다.
MSDN을 참조하자.
참조
뇌를 자극하는 C# 5.0 프로그래밍, 박상현, 한빛미디어
'아카이빙 > C#' 카테고리의 다른 글
[C#] foreach 가능한 객체 만들기 (0) | 2018.06.20 |
---|---|
[C#] 인덱서 (0) | 2018.06.20 |
[C#] 프로퍼티 (0) | 2018.06.20 |
[C#] 추상클래스와 인터페이스 (0) | 2018.06.18 |
[C#] 여러 인터페이스의 멤버를 명시적 구현 (0) | 2018.06.18 |