728x90
반응형

[예제1]

using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;

namespace ConsoleApp1
{    
    class Program
    {        
        static void f1(int a)
        {
            int b;
            b = a;
            WriteLine(a + " " + b);
        }
        static void f1(string a)
        {
            string b;
            b = a;
            WriteLine(a + " " + b);
        }
        class Tiger { }
        static void f1(Tiger a)
        {
            Tiger b;
            b = a;
            WriteLine(a + " " + b);
        }
        static void Main(string[] args)
        {
            f1(10);
            f1("호랑이");
            f1(new Tiger());
        }
    }
}


[예제2]

using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;

namespace ConsoleApp1
{    
    class Program
    {        
        static void f1(int a)
        {
            int b;
            b = a;
            WriteLine(a + " " + b);
        }
        static void f1(string a)
        {
            string b;
            b = a;
            WriteLine(a + " " + b);
        }
        class Tiger { }
        static void f1(Tiger a)
        {
            Tiger b;
            b = a;
            WriteLine(a + " " + b);
            // 제네릭을 사용하는 방법
            // f2<T> == f2<향식매개변수>
        }
        static void f2<T>(T a)
        {
            T b;
            b = a;
            WriteLine(a + " " + b);
            // T[] ar = new T[10];
        }
        static void Main(string[] args)
        {
            f1(10);
            f1("호랑이");
            f1(new Tiger());
            f2<int>(10);
            f2<string>("호랑이");
            f2<Tiger>(new Tiger());
            Tiger t = new Tiger();
            f2<Tiger>(t);
        }
    }
}


[예제3]

using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;

namespace ConsoleApp1
{    
    class Program
    {
        // dest(=target) = destination(받는놈), src(=original) = source(주는놈)
        // 함수 혹은 클래스는 형식 매개변수를 선언한다.
        // 함수 호출시에 타입을 명시하여 호출(함수) 혹은 생성(클래스)한다.

        static void copy<T>(T[] dest, T[] src)
        {
            for (int i = 0; i < src.Length; i++)
            {
                dest[i] = src[i];
            }
        }
        static void Main(string[] args)
        {
            int[] ar = { 10, 20, 30 };
            int[] br = new int[ar.Length];
            copy(br, ar);
            foreach(var item in br)
            {
                Write(item + " ");
            }WriteLine();

            string[] cr = { "호랑이", "코끼리", "독수리" };
            string[] dr = new string[cr.Length];

            copy<string>(dr, cr);

            foreach(var item in dr)
            {
                Write(item + " ");
            }WriteLine();
        }
    }
}

 

 

728x90
반응형

'Education > Edu | .net' 카테고리의 다른 글

# 29.2) [C#] 문법12  (0) 2021.02.24
# 29.1) [C#] 문법12 (delegate)  (0) 2021.02.24
# 28.1) [C#] 문법10  (0) 2021.02.23
[C# 언어 3강] 데이터형 (5/5) 값 형식과 참조 형식, 정리  (0) 2021.02.23
# 27) [C#] 문법9 (array)  (0) 2021.02.22

+ Recent posts