C#

[C# 기초공부] 구조체

zoozoo2 2023. 1. 4. 19:47

public struct 구조체명

{

   //멤버, 속성, 메서드

}

 

제한 사항

- 구조체에 선언된 const, static 변수만 초기화 가능

- 구조체 안에 선언할 수 있는 생성자는 매개변수가 반드시 있어야 함

- 구조체를 같은 구조체에 대입하게 되면 값이 복사

- 구조체는 값 형식이고 클래스는 참조 형식임 

- 구조체는 구조체 또는 클래스에 상속할 수 없음

- 구조체는 인터페이스를 상속하여 메서드를 구현할 수 있음

namespace ConsoleApp4
{
    public struct Mystruct
    {
        public int Age;
    }

    public class MyClass
    {
        public int Age;
    }

    class Program
    {
        static void Main(string[] args)
        {
            Mystruct test1 = new Mystruct();
            test1.Age = 12;
            Mystruct test2 = test1;
            test2.Age = 24;
            Console.WriteLine("{0} {1}", test1.Age, test2.Age);

            MyClass test3 = new MyClass();
            test3.Age = 12;
            MyClass test4 = test3;
            test4.Age = 24;
            Console.WriteLine("{0} {1}", test3.Age, test4.Age);
            
        }
    }
}

 

 

열거형

-상수를 문자열로 대치하여 선언, 상수에 의미 부여

형식

enum 열거형 명칭{문자열1, 문자열2}

enum 열거형 명칭{문자열1 = 상수, 문자열2 = 상수};

enum 열거형 명칭{문자열1 = 상수, 문자열};

 

기본은 int형이지만 char형을 제외한 형식을 지정할 수 있음

enum Days : byte{Sun = 0, Mon, Tue, Wed, Thu };

 

열거형 변수가 아닌 변수에 열거형 값을 대입할 때는 데이터형을 명시할 것

 

namespace ConsoleApp4
{
    enum Days: byte
    {
        Sun = 10, Mon, Tue, Wed, Thu, Fri, Sat
    };
    class Program
    {
        static void Main(string[] args)
        {
            byte nValue = (byte)Days.Mon;
            Days day = Days.Tue;
            Days day2 = Days.Sun;
            int day3 = (int)Days.Sun;
            Console.WriteLine("{0} {1} {2} {3}", nValue, day, day2, day3);
        }
    }
}