아카이빙/C#

[C#] System.Array

셩님 2018. 6. 20. 04:06

[C#] System.Array

  • 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#' 카테고리의 다른 글

[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