C#: Generic에 대해서 살펴보자

이재형·2024년 6월 19일
0
post-thumbnail
post-custom-banner

Unity 공부

배운 내용

1. Generic이 무엇인가?


설명: 아직 많은 코드를 알지는 못하지만 클래스나 메서드를 생성할 때 매개 변수를 여러개로 사용할 때 오버로딩을 자주 사용한다. 그런데 오버로딩보다 더 효율적인 것이 있다면 어떨까? 그것이 바로 Generic의 T라는 것이다. 이에 대해서 아래에서 더 살펴보자

장점: Generic으로 사용한 코드에는 T가 들어가는데 T에는 타입이 들어가는데 int,string같은 타입이나 class의 타입 등 여러 가지가 들어갈 수가 있는데 그렇기 때문에 코드의 재사용이 아주 좋다.


2. Generic을 이용한 T 메서드 변환


void Start()
{
    View(25);
    View("Sparta");
}

public void View(int value)
{
    Debug.Log(value);
}

public void View(string value)
{
    Debug.Log(value);
}

// 제네릭을 이용하여 변환
void Start()
{
    View<int>(25);
    View<string>("Sparta");
}

public void View<T>(T value)
{
    Debug.Log(value);
}

설명: 메서드를 사용할 때 매개변수를 다르게 하는 오버로딩을 사용을 하게 되는데 제네릭으로 설정을 하여

문제: Debug.log같은 경우에는 어떤 타입인지 상관없이 실행이 되지만 타입과 맞지 않는 코드를 사용 시에는 문제가 생기므로 예외처리나 변경에 따른 문제에 대해서 대비 해야한다.


3. 제네릭으로 싱글톤을 활용해보자

// 제네릭으로 상속할 제네릭 클래스 생성
using UnityEngine;

public class Singleton<T> : MonoBehaviour where T : MonoBehaviour
{
    private static T instance;

    public static T Instance
    {
        get
        {
            if (instance == null)
            {
                instance = (T)FindObjectOfType(typeof(T));

                if (instance == null)
                {
                    GameObject singletonObject = new GameObject();
                    instance = singletonObject.AddComponent<T>();
                }
            }
            return _instance;
        }
    }
}

// 사용할 싱글톤의 상속
public class 타입: Singleton<타입>

설명: 지금까지 확인한 제네릭을 이용하여 싱글톤을 활용하는 코드이다.
상속으로 Instance를 받아서 사용가능하기 때문에 클래스마다 싱글톤을 만드는 번거로움을 해결 할 수 있다.


정리

배운 내용

1. Generic: 여러 타입을 묶을 때 사용하게 된다.

해결 못한 문제

1. 없음

문제점

1. 없음

profile
한국사람
post-custom-banner

0개의 댓글