Generic

    [Java] Generic 제네릭

    사용법다이아몬드 연산자 ()에 타입을 정의해주면 되지만 명명 규칙이 존재한다.E : 요소(element)K : 키(key)N : 숫자(Number)T : 타입(type)V : 값(value)S, U, V : 2,3,4번째 선언된 타입장점컴파일 타임때 타입추론을 통한 타입에러를 사전에 잡을 수 있다.컴파일러가 타입추론을 통한 타입 캐스팅을 자동으로 해준다.코드의 재사용성이 매우 높아진다.컴파일 타임 때 타입 추론을 통한 타입 에러를 사전에 잡을 수 있다public interface List extends Collection {...} List를 사용할 때 우리는 다이아몬드 연산자 () 안에 어떠한 타입을 지정하고 사용한다. Java 7 버전 이후로 도입됐다.List string = new ArrayList..

    [C#] 제네릭 메서드(Generic Method) 널(Null) 반환 방법

    매개변수가 null이 아니면, 매개변수의 값을 반환하고 매개변수의 값이 null이면, null을 반환하는 코드다. T ReturnValue(T val) { if (val != null) { return val; } else { return null; } } 하지만, return null; 코드에서 에러가 발생한다 C#에서 null이 올 수 있는 데이터 타입이 있고 불가능한 데이터 타입이 존재한다. 기본적으로 숫자형 타입들은 Nullable 연산자를 사용하지 않으면, null값을 할당할 수 없다. 즉, 제네릭 타입은 null이 가능한 타입도 있고 불가능한 타입이 있으므로 null을 반환할 수 없다. 만약, 제네릭 메서드에서 null을 반환하고 싶은 경우 default(T)를 사용한다. T ReturnVal..

    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도 있겠지만 가장 큰 특징은 추상화를 할 수 없다는 점이다 따라서 아래는 에러..