본문 바로가기
C#

구조체를 초기화하는 몇 가지 방법들

by Oz Driver 2025. 6. 3.

 

 

C# 에서 구조체를 선언하고 값을 초기화 하는 방법에는 여러 가지가 있습니다.

한 가지 방법만 익혀서 사용하면 되지만, 또 다른 방으로 초기화된 코드를 보면 가끔 당황스러울 때가 있습니다.
그래서 이 글에서는 구조체를 객체로 만들고 초기화하는 대표적인 방식들을 정리해 보았습니다.
또한 구조체 배열, 리스트에서의 초기화 방식까지 함께 다루겠습니다. 

 

구조체 선언

먼저 예제로 사용할 Item 구조체를 아래와 같이 정의합니다.

struct Item
{
    public string name;
    public int price;
    public string desc;
}

 

1. 객체 선언 후 값을 하나씩 넣기

가장 직관적인 방식입니다.
객체를 먼저 선언한 후, 각각의 필드에 값을 개별적으로 할당합니다.

Item item;
item.name = "Fireball";
item.price = 100;
item.desc = "적에게 화염 피해를 입힙니다.";

 

참고로 구조체는 값 형식이기 때문에 new 없이도 선언은 가능하지만 field 에 접근하려면, 반드시 직접 초기화를 하거나, new 를 사용해 런타임에 초기화를 시켜주어야 합니다. 

 

2. new 로 만든 뒤 값을 하나씩 넣기

객체를 new 로 생성한 다음, 필드를 개별적으로 설정할 수도 있습니다. 

Item item = new Item();
item.name = "Fireball";
item.price = 100;
item.desc = "적에게 화염 피해를 입힙니다.";

 

1번과 동일하게 동작하며, 문법적으로 더 명확하게 객체를 생성했다는 의도를 표현할 수 있습니다.

위에 언급한것처럼, new 로 초기화할 경우는 값을 입력하지 않아도 런타임에서 디폴트 값으로 초기화됩니다.

이 경우, int 형은 0, float 형은 0.0f, bool 형은 false, string 은 null 값을 갖게 됩니다.

 

3. 객체 생성과 동시에 { } 를 이용해 한 번에 넣기

new 키워드와 함께 중괄호 { } 를 사용하면, 객체를 생성하면서 값을 한 번에 넣을 수 있습니다.

Item item = new Item
{
    name = "Fireball",
    price = 100,
    desc = "적에게 화염 피해를 입힙니다."
};

 

이 방식은 코드가 짧고 보기 깔끔하며, 여러 필드를 한꺼번에 초기화할 때 유용합니다. 왜냐하면...

Item item = new Item { name = "Fireball", price = 100, desc = "적에게 화염 피해를 입힙니다." };

 

이렇게 한줄로도 쓸 수 있기 때문입니다. 

 

구조체 배열에서의 초기화

구조체 배열을 만들고 new 를 이용해 각 요소를 기본값으로 자동 초기화 시켰습니다.

그 이후에 원하는 값으로 각 field 를 채워주었습니다.

배열에서도 위에 언급한 방법들로 초기화가 가능합니다.

Item[] items = new Item[3];

// 방식 1: 하나씩 필드에 할당
items[0].name = "Fireball";
items[0].price = 100;
items[0].desc = "적에게 화염 피해를 입힙니다.";

// 방식 2: 객체를 생성하면서 값을 한 번에 설정
items[1] = new Item
{
    name = "Ice Shot",
    price = 120,
    desc = "적을 빙결 상태로 만듭니다."
};

 

즉, 두 방식 모두 사용할 수 있으며, 상황에 따라 더 직관적인 쪽을 선택하시면 됩니다.

위의 코드에서 최초의 new 는 구조체 배열을 생성하기 위한 것이고, 두번째 new 는 방식 2 번처럼 배열의 요소 중 구조체 하나에 대한 생성과 동시에 초기화를 위한 것입니다. 

 

리스트에서의 초기화

끝으로 리스트에서는 여러 개의 객체를 한 번에 넣을 수 있으며, 주로 객체를 생성하면서 동시에 값을 넣는 방식으로 초기화합니다.

List<Item> items = new List<Item>
{
    new Item { name = "Fireball", price = 100, desc = "화염 피해" },
    new Item { name = "Ice Shot", price = 120, desc = "빙결 피해" },
    new Item { name = "Speed Boots", price = 80, desc = "이동 속도 증가" }
};

 

정리

이상으로 구조체를 선언하고 초기화하는 다양한 방법에 대해 정리해 보았습니다.
이제 상황에 따라 가장 적절한 방식으로 객체를 생성하고 사용할 수 있을 것입니다.