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만 작동한다