본문 바로가기
Program Language/C#

Part3. C# 실력 다지기(1. 제네릭 메소드 이해하기)

by 토담이아빠 2023. 3. 15.

제네릭 메소드

 

오늘은 C#에서 제네릭 메서드에 대해 포스팅하려고 합니다. 제네릭 메서드는 다양한 데이터 타입을 사용할 수 있게 해 주어 코드의 재사용성을 높여주는 훌륭한 기능입니다. 이 글을 통해 제네릭 메서드의 개념을 배우고 예제 코드를 통해 실습해 봅시다.


제네릭 메서드란?

 

제네릭 메서드는 메서드를 선언할 때 일반화된 데이터 타입을 사용하여, 호출 시 실제 데이터 타입을 지정할 수 있는 메소드입니다. 이렇게 함으로써, 다양한 데이터 타입을 처리할 수 있는 하나의 메소드를 작성할 수 있습니다. 

 

제네릭 메소드 선언

 

제네릭 메소드를 선언하는 방법은 간단합니다. 메소드 이름 앞에 꺾쇠괄호(<>)와 일반화된 타입 매개변수를 추가합니다. 예를 들어, 아래와 같이 선언할 수 있습니다.


public void MyGenericMethod<T>(T myParameter) { ... }

여기서 T는 일반화된 타입 매개변수입니다. 이제 이 메소드를 호출할 때마다 다른 타입의 매개변수를 전달할 수 있습니다.

 

제네릭 메소드 사용하기(예제)

 

다음은 제네릭 메소드를 사용하는 간단한 예제입니다. 이 예제에서는 두 개의 매개변수를 받아 출력하는 제네릭 메소드를 작성해 봅시다.


using System;

class Program
{
    static void Main(string[] args)
    {
        PrintTwoParameters<int>(10, 20);
        PrintTwoParameters<string>("Hello", "World");
        PrintTwoParameters<double>(3.14, 6.28);
    }

    static void PrintTwoParameters<T>(T parameter1, T parameter2)
    {
        Console.WriteLine($"Parameter 1: {parameter1}, Parameter 2: {parameter2}");
    }
}

위 예제에서는 PrintTwoParameters라는 제네릭 메서드를 선언하고, 여러 타입의 매개변수를 사용하여 호출했습니다. 실행 결과는 다음과 같습니다.


[실행결과]

Parameter 1: 10, Parameter 2: 20
Parameter 1: Hello, Parameter 2: World
Parameter 1: 3.14, Parameter 2: 6.28

이처럼 제네릭 메소드를 사용하면 다양한 타입의 매개변수를 처리하는 메소드를 간단하게 작성할 수 있습니다. 이를 통해 코드의 중복을 줄이고, 간결하고 재사용 가능한 코드를 작성할 수 있습니다.

 

제한된 제네릭 메소드

 

제네릭 메소드를 작성할 때, 특정 기능을 사용하기 위해 일반화된 타입 매개변수에 제약조건을 추가할 수도 있습니다. 이를 '제한된 제네릭 메서드'라고 합니다. 제약조건은 where 키워드를 사용하여 지정할 수 있습니다.

예를 들어, 아래의 예제에서는 T 타입이 IComparable<T> 인터페이스를 구현한 타입으로 제한됩니다. 이렇게 함으로써 메소드 내에서 IComparable<T> 인터페이스의 CompareTo 메서드를 사용할 수 있게 됩니다.


using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(Max(5, 10));
        Console.WriteLine(Max("apple", "banana"));
    }

    static T Max<T>(T a, T b) where T : IComparable<T>
    {
        return a.CompareTo(b) > 0 ? a : b;
    }
}

실행 결과는 다음과 같습니다.


[실행결과]

10
banana

제한된 제네릭 메소드를 사용하면, 메서드가 특정 타입만 처리할 수 있도록 제한할 수 있으며, 이를 통해 타입 안정성을 더욱 강화할 수 있습니다.


정리


C#의 제네릭 메서드는 다양한 타입을 처리할 수 있는 유연한 코드를 작성할 수 있도록 도와줍니다. 제네릭 메서드를 사용하면, 코드의 중복을 줄이고 재사용성을 높일 수 있으며, 타입 안정성을 유지할 수 있습니다. 또한 제한된 제네릭 메소드를 통해 일반화된 타입 매개변수에 제약조건을 추가하여, 특정 기능을 사용할 수 있게 할 수 있습니다.

이 글을 통해 제네릭 메서드의 기본 개념을 배웠으니, 이제 여러분의 프로젝트에서 제네릭 메서드를 활용하여 더 효율적인 코드를 작성해 보세요!


 

댓글