아카이빙/C#

[C#] 제네릭 메소드

셩님 2018. 6. 21. 07:15

[C#] 제네릭 메소드

  • 제네릭 메소드는 어떠한 형식을 일반화한 메소드이다.

static void CopyArray(int[] source, int[] target)
{
   for (int i=0; i<source.Length; i++)
  {
       target[i] = source[i];
  }
}

static void CopyArray(string[] source, string[] target)
{
   for (int i=0; i<source.Length; i++)
  {
       target[i] = source[i];
  }
}
  • 위의 두 메소드는 데이터 형식만 다르고 내용은 완전히 같다.

  • 이를 일반화하면 다음과 같이 될 수 있다.

CopyArray의 제네릭 메소드

static void CopyArray<T> (T[] source, T[] target)
{
   for (int i=0; i<source.Length; i++)
  {
       target[i] = source[i];
  }
}

PrintArray의 제네릭 메소드

static void PrintArray<T> (T[] arr)
{
   Array.ForEach(arr, (x) => {Console.Write("{0} ", x);});
   Console.WriteLine();
}
  • 비슷하게 PrintArray라는 Array의 원소를 출력하는 제네릭 메소드도 만들 수 있다.

테스트

static void Main()
{
   int[] a = {1, 2, 3, 4, 5};
   int[] b = new int[5];

   CopyArray<int>(a, b);
   PrintArray<int>(b);

   string[] c = {"Com2us", "Smilegate", "Nexon"};
   string[] d = new string[3];

   CopyArray<string>(c, d);
   PrintArray<string>(d);
}

1 2 3 4 5
Com2us Smilegate Nexon

참조

  • 뇌를 자극하는 C# 5.0 프로그래밍, 박상현, 한빛미디어


'아카이빙 > C#' 카테고리의 다른 글

[C#] 제네릭의 형식 제약  (0) 2018.06.21
[C#] 제네릭 클래스  (0) 2018.06.21
[C#] foreach 가능한 객체 만들기  (0) 2018.06.20
[C#] 인덱서  (0) 2018.06.20
[C#] System.Array  (0) 2018.06.20