C#/복습
메서드(일반화), 메서드 오버라이딩, 2중 for문
Game Client Lee Hwanguk
2023. 1. 11. 19:27
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading.Tasks;
namespace Study12
{
class App
{
//생성자
public App()
{
//일반화 메서드(제네릭)
//메서드 오버라이딩
//2중 for문을 사용하여 배열 요소들을 모두 출력해보자
int[] arr0 = new int[3]; //0,0,0
int[] arr1 = {1,4,3,5,2,6,7};
Test(arr0, arr1);
int[] arr2 = { 1, 2, 3 };
int[] arr3 = new int[5];
Test(arr2, arr3);
float[] arr4 = { 4.125f, 1.43f, 23.44f };
float[] arr5 = new float[5];
}
void Test<T>(T[] a, T[] b)
{
//result=a + b;//산술 연산자는 [] 형식에 적용 불가오류
//return a + b; //산술 연산자는 [] 형식에 적용 불가오류
for(int i=0; i<b.Length; i++)
{
for(int j=0; j < a.Length; j++) //제네릭으로 받은 배열은 어떤 배열이 들어올지모르니 배열의 요소에 접근할수 없다, 길이는 알려준다
{
Console.WriteLine("b:{0}, a:{1}", b[i], a[j]);
}
}
Console.WriteLine();
}
void Test(int [] arr2, int []arr3) //메서드의 오버라이딩 1
{
for(int k=0; k<arr2.Length; k++)
{
for(int l=0; l < arr3[k]; l++)
{
Console.WriteLine("a:{0}, b{1}", arr2[l], arr3[k]);
}
}
}
//void Test(float[] a, float[] b) //메서드 오버라이딩 2
//{
// Console.WriteLine(a[0], b[1]); // a[0] 인덱스가 string으로 변환할 수 없다는 오류가뜬다
// //오버라이딩은
//}
}
}
#void Test<T>(T[]a, T[]b) 메서드 일반화, 메서드명 뒤에<T>, 매게변수 타입자리에 <T>
#오버로딩을 사용하여 Test메서드를 두번 불러오고싶지만 첫번째 Test만 작동한다