NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    Java Java vs C# (열거형과 구조체, enum and struct) - 5부

    페이지 정보

    본문

    안녕하세요. 소심비형입니다. 오늘은 열거형과 구조체에 대해서 알아볼께요.

    열거형은 enum 키워드를 사용하여 정의합니다. Java는 특수한 형태의 클래스며, C#은 Built-in Type입니다. 이름과 값을 가지는 상수의 집합을 나타내며, C#의 경우에는 명시적으로 값을 할당하지 않으면 0부터 1씩 증가하며 자동으로 할당됩니다.

     

    Java

    package JavaType; 
    
    enum Animal 
    { 
        개, 
        고양이, 
        소, 
        말 
    }; 
    
    enum Emotion 
    { 
        기쁨(10),  슬픔(20); 
    
        private final int value; 
    
        Emotion(int value) 
        { 
            this.value = value; 
        }
    
        public int value() 
        { 
            return value; 
        }
    }; 
    
    public class EnumAndStruct 
    {
        public static void main(String[] args) 
        {
            Animal a = Animal.개; 
            if (a != Animal.말) 
            {
                System.out.println(a); 
            }
            Emotion e = Emotion.기쁨; 
            System.out.println(e.value()); 
        }
    }

     

     

    아래는 결과를 찍어본 화면입니다.

    6kVSPXe.png

     

    C#은 기본 제공 타입이므로 Java보다는 구현이 쉽습니다.

    C#

    using System;
    namespace ConsoleApplication1 
    { 
        enum Animal 
        { 
            개, 고양이, 소, 말 
        } 
    
        enum Emotion 
        { 
            기쁨 = 10, 슬픔 = 20 
        }
    
        class Program 
        { 
            static void Main(string[] args) 
            { 
                Animal a = Animal.개; 
                if (a != Animal.소) 
                { 
                    Console.WriteLine(a); 
                } 
                Emotion e = Emotion.기쁨; 
                Console.WriteLine((int)e); 
                Console.ReadLine(); 
            }
        } 
    }

     

     

    이것도 결과는 "개, 10"이 출력됩니다.

    oz2GnF3.png

     

    1. Java는 1.5 이상부터 enum을 지원합니다.

    2. C#은 3.0 이상부터 확장 메서드를 통해 enum type에 메서드를 정의할 수 있습니다.

     

    열거형은 다른 상수와 마찬가지로, 컴파일 타임에 열거형의 개별 값에 대한 모든 참조는 숫자 리터럴로 변환됩니다. 엔터프라이즈급 개발 환경에서는 열거형 사용법에 대한 지침을 개발자들이 공유하고 있어야 합니다. 일반적으로 switch ~ case에서 enum을 많이 사용하죠? switch에서 비교할 때 상수의 변경에 대해 의도하지 않은 값과 비교될 수 있습니다. 예를 들어 Emotion에 "소심 = 10"을 추가하고 기쁨 = 20, 슬픔 = 30으로 변경했다면 다른 어떤 곳에서 문제를 발생시킬 수 있습니다. 이 문제를 피하기 위해서는 명명된 이름을 사용해야 합니다. 하지만, 10 보다 큰 경우(소심을 제외한 모두) 모두 통과해야 한다면 조심해서 사용해야겠죠?

    dvEt4IQ.gif

     

     

    구조체는 C#에만 있는 형식으로 자바와 비교할만한 내용이 없네요. 다만, Java는 클래스로 비슷하게 구현할 수 있죠. 구조체에 대해서 좀 더 자세하게 설명한 링크를 참조하세요.

    Java 구조체: [ 클릭 ]

    C# 구조체:   [ 클릭 ]

     

    다음 시간에...

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.