ABOUT ME

C#, JAVA, Python, 코딩테스트, 일상 등 IT관련 블로그 입니다. 안녕하세요. 새싹개발자 입니다. 힘냅시다 빠샤! 주꾸미 발처럼 이것저것 콕콕 찔러보며 기록하고자 합니다

Today
Yesterday
Total
  • [C#] 일반화(1)
    C# 2022. 1. 14. 09:07
    728x90

    안녕하세요.

     

    오늘은 간단하게 일반화에 대해 알아보겠습니다.

     

    C#은 공부하고공부해도 참 다양한 기능들이 있는것 같습니다.

    근데왜 한국에서는 인기가 없는지 아쉽네요.

    일반화와 관련된 부분은 '뇌를 자극하는 C#5.0 프로그래밍' 책내용을 토대로 공부했습니다.

     

    먼저 일반화란 "특수한 개념으로부터 공통된 개념을 찾아 묶는 것"입니다.

     

    하나의 예를들어 일반화에대한 필요성을 설명해 보겠습니다.

    정수를 복사하는 메소드를 하나 만들었습니다.

    만들고보니 문자열도 복사하는 메소드가 하나 필요하네요.

            void CopyArray(int [] source, int [] target)
            {
                for(int i=0;i<source.Length;i++)
                {
                    target[i] = source[i];
                }
            }
            void CopyArray(string[] source, string []target)
            {
                for (int i = 0; i < source.Length; i++)
                {
                    target[i] = source[i];
                }
            }

    이런 식으로 말입니다~

    그리고 또 만들다 보니 double, long, float등등... 복사하는 매소드를 하나하나 다 만든다면 너무 복잡하겠죠?

     

    그렇기에 일반화를 사용합니다.

     

    일반화의 간단한 형식입니다.

     

    한정자 반환형식, 메소드이름<형식매개 변수> (매개 변수 목록) 

    그럼 해당 코드들을 일반화 해볼까요?

     

    먼저 테스트할 메인입니다.

            static void Main(string[] args)
            {
                int[] source = { 1, 2, 3, 4, 5 };
                int[] target = new int[source.Length];
    
                CopyArray<int>(source, target);
    
                foreach(int element in target)
                {
                    Console.WriteLine(element);
                }
    
                string[] source2 = { "하나", "둘", "셋", "넷", "다섯" };
                string[] target2 = new string [ source2.Length ];
    
                CopyArray<string>(source2, target2);
    
                foreach (string element in target2)
                {
                    Console.WriteLine(element);
                }
            }

     

    보시면 CopyArray라는 기본 함수를 기반으로 int Array와 string형을 같이 사용하는걸 볼 수 있습니다.

    다른점이라면 CopyArray뒤에 사용하는 형식에 따라 <int>, <string>이 붙는다의 차이가 있네요.

    그럼 CopyArray의 구현부분을 보시죠.

     

            static void CopyArray<T>(T[]source, T[]target)
            {
                for (int i = 0; i < source.Length; i++)
                {
                    target[i] = source[i];
                }
            }

    자료형이 들어가야 되는 부분에 T로 수정을 한걸 볼 수 있습니다.

    어떤 형식이든 이제 사용가능합니다.

     

     

    결과내용입니다.

    이렇게 복사가 source에서 target으로 복사가 잘된걸 확인 할 수 있네요.

    오늘은 여기서 마무리하겠습니다.

     

    다음에는 Class일반화에 대해 알아보겠습니다. 감사합니다.

    'C#' 카테고리의 다른 글

    댓글

Designed by Tistory.