C# 프로그래밍 - 제네릭(Generic) 클래스, 메서드

C# 프로그래밍 - 제네릭(Generic) 클래스, 메서드 

제네릭(Generics)을 사용하여 타입에 의존하지 않는 클래스, 메서드, 인터페이스등을 정의할수있습니다. 여러 데이터 타입에 대해 동일한 코드를 사용할 수 있어 코드 중복을 줄일수있습니다(코드 재사용성) 또 컴파일 시점에 타입 검사를 수행하고 박싱(boxing)작업에 대한 위험이 발생하지않아 런타임 오류를 줄일 수 있고(타입 안전성)  성능 향상에 기여합니다.


제네릭은<T>를 사용하여 정의합니다. <T>는 타입 매개변수로 객체 생성 및 메서드 호출 시 실제 타입으로 대체됩니다. 


제네릭 클래스 예시

public class GenericClass<T>
{
    private T data;

    public GenericClass(T value)
    {
        data = value;
    }

    public T GetData()
    {
        return data;
    }
}

var intInstance = new GenericClass<int>(10);
Console.WriteLine(intInstance.GetData()); // 10

var stringInstance = new GenericClass<string>("Hello");
Console.WriteLine(stringInstance.GetData()); // Hello

 


제네릭 메서드 예시1

public class GenericMethodExample
{
    public T GetDefault<T>()
    {
        return default(T); // 기본값 반환
    }
}

var example = new GenericMethodExample();
Console.WriteLine(example.GetDefault<int>()); // 0
Console.WriteLine(example.GetDefault<string>()); // null



제네릭 메서드 예시2

public class Example
{
    public T GetValue<T>(T value)
    {
        return value;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Example example = new Example();

        int intValue = example.GetValue(10);
        string stringValue = example.GetValue("Hello, Generics!");

        Console.WriteLine(intValue);       //10
        Console.WriteLine(stringValue);    //Hello, Generics!
    }
}

 

 

 

 

컴파일 시점 타입 검사

C# 컴파일러는 코드가 실행되기 전에 변수가 어떤 타입인지 확인합니다. 예를 들어 정수형 변수에 문자열 값을 할당하려고 하면 컴파일러는 오류를 발생시킵니다. 잘못된 타입 사용이 사전에 차단됩니다.
int number = "Hello"; // 컴파일 오류 발생

런타임 오류 감소

프로그램이 실행되는 동안 발생할 수 있는 오류로 일반적으로 프로그램의 동작에 영향을 미칩니다. 타입 안전성이 보장되지 않으면 잘못된 캐스팅 또는 boxing 작업에 의해 오류가 발생할 수 있습니다.
object obj = "Hello";
int number = (int)obj; // InvalidCastException 런타임 오류 발생

제네릭을 사용하면 메서드의 매개변수와 반환 타입이 타입 매개변수에 의해 결정되므로 잘못된 타입을 사용할 가능성이 줄어듭니다.

 

 

https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/generics/

 

댓글

Designed by JB FACTORY