Where

    C# 제네릭 형식 제약 조건 (where)

    제네릭 제약 조건 추가 class GenericClass { public T objMember { get; set; } } class Program { static void Main(string[] args) { GenericClass genericObj1 = new GenericClass(); GenericClass genericObj2 = new GenericClass(); GenericClass genericObj3 = new GenericClass(); } } 제네릭은 모든 타입을 허용하는 기법이므로 GenericClass 클래스의 objMember 멤버 변수는 값 형식인 int형이 될 수도 있고 참조 형식인 string형과 ArrayList 타입도 가능하다. "GenericClass 클래스의 o..

    C# 제네릭 (C++ > 템플릿)

    using System; public class Test where T : class { public T Get_val(T _val) { return _val; } } public class Another { public static void Main() { Test int_test = new Test(); Console.WriteLine(int_test.Get_val(10)); } } 첫째 클래스 선언 라인에 보면 where T : class라고 명시 되어있다, Main 함수 내에 선언하고 있는건 int형이다, 따라서 아래와 같이 에러가 뜬다. C++와 가장 큰 차이점은 C#의 템플릿은 제약 사항이 많다는 것이다, SFINAE도 있겠지만 가장 큰 특징은 추상화를 할 수 없다는 점이다 따라서 아래는 에러..