본문 바로가기
C#

C# - Struct ( 구조체 ) / Enum ( 열거형 )

by Classic Master 2024. 5. 19.
728x90

구조체와 열거형은 무엇일까?

구조체( Struct )

정의

구조체(struct)는 여러 개의 변수를 하나의 그룹으로 묶어 관리할 수 있는 사용자 정의 데이터 타입입니다. C, C++, C#, Rust, Swift 등의 많은 프로그래밍 언어에서 사용되며, 서로 관련된 데이터를 하나의 논리적인 단위로 묶어줍니다.

개요

구조체는 객체 지향 프로그래밍의 클래스와 유사하지만, 일반적으로 클래스보다 간단하고 가벼운 데이터를 관리할 때 사용됩니다. 구조체의 멤버는 다양한 데이터 타입을 가질 수 있으며, 이를 통해 복잡한 데이터 구조를 간편하게 정의할 수 있습니다.

열거형(Enum)

정의

열거형(enum)은 이름을 가진 상수들의 집합을 정의하는 사용자 정의 데이터 타입입니다. 열거형을 사용하면 코드의 가독성을 높이고, 특정 값들만 사용해야 하는 경우 이를 제한할 수 있습니다.

개요

열거형은 특정 값들만 허용하는 변수를 정의하는 데 유용하며, 값들이 의미를 가지도록 이름을 부여할 수 있습니다. 이를 통해 코드의 명확성과 유지 보수성을 높일 수 있습니다.

 


구조체(Struct) 사용법
구조체를 정의하고 사용하는 방법은 다음과 같습니다.

public struct Person
{
    public string Name;
    public int Age;
    public float Height;

    public Person(string name, int age, float height)
    {
        Name = name;
        Age = age;
        Height = height;
    }

    public void PrintInfo()
    {
        Console.WriteLine($"Name: {Name}");
        Console.WriteLine($"Age: {Age}");
        Console.WriteLine($"Height: {Height}");
    }
}

 

class Program
{
    static void Main()
    {
        Person person1 = new Person("Alice", 30, 165.5f);
        person1.PrintInfo();
    }
}

 

열거형(Enum) 사용법
열거형을 정의하고 사용하는 방법은 다음과 같습니다.

public enum Weekday
{
    Sunday,
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday
}
class Program
{
    static void Main()
    {
        Weekday today = Weekday.Wednesday;

        if (today == Weekday.Wednesday)
        {
            Console.WriteLine("Today is Wednesday.");
        }
    }
}
반응형

구조체의 장점과 단점

장점

  • 논리적 그룹화 : 관련된 데이터를 하나의 단위로 묶어 관리할 수 있습니다.
  • 가독성 향상 : 데이터를 구조체로 묶으면 코드의 가독성이 좋아집니다.
  • 메모리 절약 : 구조체는 클래스보다 메모리 사용량이 적을 수 있습니다.
  • 성능 : 클래스에 비해 오버헤드가 적어 성능이 좋을 수 있습니다. 

* 오버헤드 : 컴퓨터 시스템에서 실제 작업을 수행하기 위해 추가적으로 필요한 자원이나 시간을 말합니다. 쉽게 말해, 원하는 작업을 수행하기 위해 소모되는 추가적인 비용이나 부담을 의미합니다. 프로그래밍이나 컴퓨팅에서 오버헤드는 여러 상황에서 발생할 수 있습니다.


단점

  • 제한된 기능 : 클래스에 비해 기능이 제한적입니다. 예를 들어, 상속이나 다형성을 지원하지 않습니다.
  • 구조적 제한 : 구조체 멤버에 기본 접근 제한자가 없으며, 이를 제어하기 위해서는 별도의 방법이 필요합니다.

 

열거형의 장점과 단점

장점

  • 가독성 : 상수 값에 이름을 부여함으로써 코드의 가독성이 향상됩니다.
  • 타입 안전성 : 열거형을 사용하면 특정 값들만 사용하도록 제한할 수 있습니다.
  • 유지 보수 용이성 : 값의 의미가 명확해져 코드 유지 보수가 용이해집니다.

단점

  • 유연성 부족 : 열거형은 상수 집합으로 제한되기 때문에 동적으로 값을 변경할 수 없습니다.
  • 범위 제한 : 열거형 값은 미리 정의된 값들로 제한됩니다.
  • 메모리 사용 : 열거형은 기본적으로 정수형으로 처리되기 때문에 메모리 사용이 비효율적일 수 있습니다.

예시

 학생 정보 관리 (구조체)

public struct Student
{
    public string Name;
    public int Id;
    public float Grade;

    public Student(string name, int id, float grade)
    {
        Name = name;
        Id = id;
        Grade = grade;
    }

    public void PrintStudent()
    {
        Console.WriteLine($"Name: {Name}");
        Console.WriteLine($"ID: {Id}");
        Console.WriteLine($"Grade: {Grade}");
    }
}

class Program
{
    static void Main()
    {
        Student student1 = new Student("John Doe", 12345, 3.75f);
        student1.PrintStudent();
    }
}

 

날씨 상태 표시 (열거형)

public enum Weather
{
    Sunny,
    Cloudy,
    Rainy,
    Snowy
}

class Program
{
    static void Main()
    {
        Weather today = Weather.Rainy;

        PrintWeather(today);
    }

    static void PrintWeather(Weather weather)
    {
        switch (weather)
        {
            case Weather.Sunny:
                Console.WriteLine("The weather is sunny.");
                break;
            case Weather.Cloudy:
                Console.WriteLine("The weather is cloudy.");
                break;
            case Weather.Rainy:
                Console.WriteLine("The weather is rainy.");
                break;
            case Weather.Snowy:
                Console.WriteLine("The weather is snowy.");
                break;
        }
    }
}

결론


구조체와 열거형은 프로그래밍을 처음 배우는 사람들에게도 매우 유용한 도구입니다. C#에서 이 두 가지 개념을 잘 이해하고 활용하면, 코드 작성이 훨씬 더 간결하고 명확해질 수 있습니다.

구조체(struct)는 여러 데이터를 하나의 논리적인 단위로 묶어 관리할 때 유용합니다. 예를 들어, 사람의 이름, 나이, 키와 같은 정보를 하나의 구조체로 묶으면, 관련된 데이터를 한꺼번에 다룰 수 있어서 편리합니다. 구조체는 값 타입이라서 메모리 사용이 효율적이며, 작은 데이터 그룹을 관리할 때 특히 좋습니다.


반면에, 열거형(enum)은 관련된 상수 값들을 그룹화할 때 사용합니다. 특정 값들만 사용할 수 있게 제한할 수 있어서, 잘못된 값이 사용되는 것을 방지해줍니다. 예를 들어, 요일을 나타내는 변수를 만들 때, 열거형을 사용하면 코드의 가독성이 높아지고 실수를 줄일 수 있습니다.


어떤 것을 선택하든, 둘 다 프로그래머에게 매우 유용합니다. 구조체는 데이터 그룹을 한꺼번에 관리할 때, 열거형은 특정 값들로만 제한된 변수를 만들 때 각각 유리합니다. 실제 프로젝트에서 필요에 따라 둘 중 하나를 선택하거나, 때로는 둘 다 사용하게 될 수도 있습니다.

결론적으로, 구조체와 열거형을 잘 활용하면 코드의 가독성과 유지보수성이 크게 향상됩니다. 프로그래머로서 이 두 가지 개념을 익혀두면, 더 효율적이고 깔끔한 코드를 작성하는 데 큰 도움이 될 것입니다. 두 가지 중 어떤 것을 선택해도 괜찮으니, 프로젝트의 요구사항에 따라 적절히 활용해보세요.

728x90
반응형