본문 바로가기
유니티 공부/C# 문법

C# 문법 - Generic, Generic Constraints, Where

by 코딩하는 돼징 2023. 4. 10.
반응형

1. Generic

제네릭 타입에서는 데이터 형식을 확정하지 않고 데이터 타입 자체를 Type Parameter로 정의한다. 일반적으로 <T>로 작성한다.

 // Generic class -> T안에 어떤 타입을 넣어도 작동된다.
class MyList<T>
{
	T[] arr = new T[10];
	public T GetItem(int i)
	{
		return arr[i];
	}
}
static void Test<T>(T input)
{

}

제네릭 타입을 사용할 때는 클래스명과 데이터 타입을 지정해주면서 사용하면 된다.

static void Main(string[] args)
{
	Test<int>(3);
	Test<float>(3.0f);
}

2. Generic Constraints

Where이란?

특정 조건에만 대응되는 데이터 타입이 필요한 경우 where키워들르 사용하여 제약 조건을 추가할 수 있다. 제약 조건이 만족하지 않을 경우 컴파일 에러가 발생한다.

단일 제약 조건

class GenericClass<T> Where T : class
{
    public T objectPiggy{get;set;}
}

class Piggy
{
    private string anme;
}

class Program
{
    static void Main(string[] args)
    {
        GenericClass<Piggy> object = new GenericClass<Piggy>();
    }
}

 


다중 제약 조건

class Example<T> where T  : contraint1, constraint2

 

class MyClass<T, U>
    where T : class
    where U : struct
{ }

 

 

 

 

 

참고: https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/where-generic-type-constraint

반응형

'유니티 공부 > C# 문법' 카테고리의 다른 글

C# 문법 - this 키워드  (0) 2023.04.11
C# 문법 - 생성자  (0) 2023.04.11
C# 문법 - 스택과 힙  (0) 2023.04.11
C# 문법 - 복사(값)와 참조  (0) 2023.04.10
C# 문법 - Object(박싱과 언박싱)  (0) 2023.04.10

댓글