본문 바로가기
카테고리 없음

[코딩일기] C# 형식 매개 변수 T

by mania2321 2024. 6. 29.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;

// [형식 매개 변수 T(Type)]
// 이름이 같은 함수는 매개변수로 구분
// 불특정 타입의 매개변수를 받을 때 사용 (어떤 타입의 매개변수를 받을지 모를 때 사용)

// 클래스에다가 형식매개변수를 이용해보자
public class Abc<T>
{
    public T var;           // T 변수
    public T[] array;       // T 배열 변수
}


public class Test : MonoBehaviour
{
    //void Print(int value)
    //{
    //    print(value);
    //}
    //void Print(string value)
    //{
    //    print(value);
    //}
    //void Print(float value)
    //{
    //    print(value);
    //}



    //void Start()
    //{
    //    print("abd");           // 출력값이 문자열이므로 2번째 print함수가 출력(string value를 매개 변수로 가지고 있으므로).
    //}

    // 형식 매개 변수를 이용하는 함수를 만들어보자.
    //void Print<T>(T value) where T : class           // 관례상 T를 씀. T를 받는 매개변수 vlaue만듦.
    //                                                 // where를 사용하여, 사용할 수 있는 매개 변수 타입을 제한할 수 있다. (예시는 class만 사용하도록 허가함)
    //{
    //    print(value);
    //}

    // 형식 매개 변수를 사용해보자

    // 클래스에다가 형식매개변수를 이용해보자
    Abc<string> a;      // 이렇게 되면 위에서 선언한 Abc 클래스 안에 있는 모든 변수들은 string 타입이 되는 것.
    Abc<float> b;

    void Start()
    {
        // Print<string>("abc");               // 원하는 타입을(여기서는 string) 입력해주면 됨
        // string은, void Print<T>의 'T'로 넘어감. 문자열을 출력하는 함수가 됨. 
        // Print<float>(4.5f);

        a.var = "abc";
        b.var = 4.5f;

        a.array = new string[1];    // 크기가 1 되는 배열 생성
        a.array[0] = "abc";         // a 변수배열 0번째 인덱스에 abc 값을 대입
        b.array = new float[1];
        b.array[0] = 4.5f;

        
    }
}

댓글