c#/기타
[c#] 일반화 메소드 , 한 개 함수로 여러 타입 사용
byH
2021. 12. 27. 11:05
728x90
반응형
만약에 다음과 같이 정의된 것들을 변수로 받아 출력하는 함수를 만든다고하자.
int[] i = { 1, 2, 3 };
double[] d = { 0.1, 0.2, 0.3 };
string[] s = { "일", "이", "삼" };
그러면 int[]를 받는 함수 print(int[] args) , double[]를 받는 함수 print(double[] args) , string을 받는 함수 print(string[] args)를 세 개 만들어서 각 자 보내주어도 된다.
private void Form1_Load(object sender, EventArgs e)
{
int[] i = { 1, 2, 3 };
double[] d = { 0.1, 0.2, 0.3 };
string[] s = { "일", "이", "삼" };
print(i);
print(d);
print(s);
}
private void print(int[] args)
{
foreach (var a in args)
{
richTextBox1.AppendText("\n");
richTextBox1.AppendText(a.ToString());
}
}
private void print(double[] args)
{
foreach (var a in args)
{
richTextBox1.AppendText("\n");
richTextBox1.AppendText(a.ToString());
}
}
private void print(string[] args)
{
foreach (var a in args)
{
richTextBox1.AppendText("\n");
richTextBox1.AppendText(a.ToString());
}
}
그러나 함수 안의 내용이 똑같은데 똑같은 함수를 여러번 적은 느낌이 든다.
이럴 때 사용하는 게 일반화 메소드 (제네릭 메소드이다.)
void print<T>(T[] args) 다음과 같이 사용하면 되는데, T 대신 다른 걸 사용하여도 된다.
일반화 함수를 만들어둔 후 형식과 같이 전달해주면 된다. 결과는 같다.
private void Form1_Load(object sender, EventArgs e)
{
int[] i = { 1, 2, 3 };
double[] d = { 0.1, 0.2, 0.3 };
string[] s = { "일", "이", "삼" };
print<int>(i);
print<double>(d);
print<string>(s);
}
private void print<T>(T[] args)
{
foreach (var a in args)
{
richTextBox1.AppendText("\n");
richTextBox1.AppendText(a.ToString());
}
}
728x90
반응형