나 개발자 진짜 되냐?

[ C# 기본 문법 17 ] 제너릭 본문

C# 을 맛보았어요!/문법정리를 해보았어요!

[ C# 기본 문법 17 ] 제너릭

Snow Rabbit 2024. 9. 23. 16:42

 

C#에서 사용되는

고급 문법 및 기능에 대해 설명하려고 한다!

 

간단하게 알아보자!

 


🌟 제너릭 🌟

클래스나 메서드를 일반화시켜 다양한 자료형에 대응할 수 있는 기능

즉 코드는 하나고

다양한 자료형에 사용한다는 의미!

 

그래서 그런지

코드의 재사용성을 높일 수 있다!

 

<T >를 사용

그래서  <T >를 쓸 때 뒤에

구체적인 자료형을 야무지게 넣어주어야 한다.

 

using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Diagnostics.Metrics;

namespace ConsoleApp1
{
    internal class Program
    {
        class Stack<T>
        {
            private T[] elements; // T는 밑에서 int로 썼기 때문에 int로 바뀐 친구 하나가 있다.
            private int top;

            public Stack() //초기화를 위해 생성자를 만들어 준다.
            {
                elements = new T[100];
                top = 0;
            }
            //스택이기 때문에 push, pop 이 있어야한다.
            public void Push(T item)
            {
                elements[top++] = item;//++이 뒤에있어서 계산 후에 +1 이 된다.
            }

            public T Pop() // 제너릭이기 때문에 T라고 써야한다.
            {
                return elements[--top];//--가 먼저 일어난다.
            }

        }
        


        static void Main(string[] args)
        {
            Stack<int> intStack = new Stack<int>();
            intStack.Push(1);
            intStack.Push(2);
            intStack.Push(3);
            Console.WriteLine(intStack.Pop());
        }
    }
}

 

주석으로 정리하긴 했는데

정말 어렵다.

 

한 개여서 그럴 수도 있으니

두 개 있는 친구 예시를 보자

 

using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Diagnostics.Metrics;

namespace ConsoleApp1
{
    internal class Program
    {
        class Pair<T1, T2>
        {
            public T1 First { get; set; }
            public T2 Second { get; set; }

            public Pair(T1 first, T2 second)
            {
                First = first;
                Second = second;
            }

            public void Display()
            {
                Console.WriteLine($"First: {First}, Second: {Second}");
            }
        }



        static void Main(string[] args)
        {
            Pair<int, string> pair1 = new Pair<int, string>(1, "One");
            pair1.Display();

            Pair<double, bool> pair2 = new Pair<double, bool>(3.14, true);
            pair2.Display();
        }
    }
}

///출력////
First: 1, Second: One
First: 3.14, Second: True

 

T로 선언해 주었던 친구들을

 

Main함수에서 int와 double로 사용해 주었더니!

값이 잘 나왔다!

 

약간 만능키인데..

어렵다

구조나 패턴을 만들 때 사용한다고 한다.

 

스택 만들었던 코드를

한번 더 읽어보고 

흐름을 파악해 보는 연습을 해보자!