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
반응형
'c# > 기타' 카테고리의 다른 글
[c#] File Copy, Delete, Move (0) | 2022.01.21 |
---|---|
[c#] Excel Read , 속도 개선, OleDbConnection 사용 (1) | 2022.01.12 |
[c#] 다른 함수에서 배열값 변경 (0) | 2021.12.24 |
[c#] ref , 다른 함수에서 변수값 변경 (0) | 2021.12.24 |
[c#] Regex 숫자만 추출 , 문자만 추출 , ismatch (0) | 2021.12.24 |