티스토리 뷰

프로그래밍

C#에서 구조체 사용하기

야라바 2015. 4. 16. 16:39


C# 코딩을 하다보면 구조체나 클래스나 뭔 차이가 있나 싶긴 하지만 몇개의 항목을 가진 간단한 데이터를 구조화해서 다룰경우에는 클래스보다는 struct문을 사용하는 구조체가 적절합니다. 예를 들면 RGB색 정보를 가진 구조체, X, Y 위치를 저장하는 구조체 top, bottom, width, depth의 창 정보를 가진 개체를 구조체로 구현할 수 있을 것입니다.

public struct SysInfo
{
    public bool dbstat, netstat;

    public SysInfo(bool db, bool net)
    {
        dbstat = db;
        netstat = net;
    }
}

구조체는 클래스 처럼 new 생성자로 값을 설정하면서 선언할 수도 있고, 일반 변수처럼 그냥 정의하고 개별 변수에 대해서 직접 초기값을 입력할 수도 있습니다. new 생성자를 사용하는 경우에는 인수가 아무것도 없는 호출과 모든 변수의 초기값을 입력하는 방식중에 하나를 선택해야 합니다. 인수 없이 생성자를 호출하면 개별 변수에는 0이 설정됩니다. 구조체 선언은 클래스와 비교해서 아래와 같은 차이가 있습니다.

  • 생성자 정의시 인수의 개수는 내부에 선언한 항목의 개수와 일치해야 합니다.
    위의 예제 코드에서는 2개의 변수를 선언 했으므로 구조체명과 동일한 생성자의 인수 또한 2개로 선언해서 생성 시점에 모든 변수를 초기화 해야 합니다.

  • 생성자를 정의하지 않을 수 있지만 인수가 없는 생성자를 정의할 수는 없습니다.
    위에서 언급한 것처럼 변수 개수와 인수 개수는 일치해야 하므로 인수가 없는 생성자는 당연히 정의할 수 없습니다.

  • 구조체 내부의 변수에 대해서 초기값을 설정할 수 없습니다.
    이와 같은 특성 때문에 구조체를 선언하는 경우 생성자를 사용하지 않으면 반드시 개별 변수에 대한 초기값 설정을 꼭 해야 합니다.

위의 예제 코드를 가지고 아래와 같은 방식이 모두 가능합니다.

SysInfo s1 = new SysInfo();
SysInfo s2 = new SysInfo(true, false);
SysInfo s3;
s3.dbstat = true;
s3.netstat = false;



댓글
댓글쓰기 폼