0Pricing
C# Academy · 강의

객체 및 컬렉션 이니셜라이저

생성 시점에 속성을 간결하게 설정합니다.

객체 및 컬렉션 이니셜라이저은(는) CoddyKit의 무료 C# Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C# Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

객체 초기화 구문이란

객체 초기화 구문은 각 조합마다 생성자를 작성하지 않고 new 바로 뒤의 { } 안에서 공개 속성이나 필드를 설정합니다.

using System;

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        var p = new Person { Name = "Ada", Age = 36 };
        Console.WriteLine(p.Name + ", " + p.Age);
    }
}

초기화 구문 문법

중괄호 안에 속성 할당을 쉼표로 구분해 나열합니다. 이러한 할당은 생성자가 완료된 후 실행됩니다.

using System;

class Car
{
    public string Make { get; set; }
    public string Model { get; set; }
    public int Year { get; set; }
}

class Program
{
    static void Main()
    {
        var car = new Car
        {
            Make = "Toyota",
            Model = "Corolla",
            Year = 2022
        };
        Console.WriteLine(car.Year + " " + car.Make + " " + car.Model);
    }
}

생성자와 초기화 구문 함께 사용하기

생성자를 호출하고 AND 초기화 구문을 함께 사용할 수 있습니다. 생성자가 먼저 실행된 다음 초기화 구문이 나열된 속성을 할당합니다.

using System;

class Widget
{
    public string Id { get; }
    public string Label { get; set; }

    public Widget(string id) { Id = id; }
}

class Program
{
    static void Main()
    {
        var w = new Widget("w1") { Label = "Submit" };
        Console.WriteLine(w.Id + ": " + w.Label);
    }
}

일부 속성만 초기화하기

필요한 속성만 나열하면 나머지는 기본값을 유지합니다. 따라서 초기화 구문을 유연하게 사용할 수 있습니다.

using System;

class Settings
{
    public bool DarkMode { get; set; } = false;
    public int Volume { get; set; } = 50;
    public string Lang { get; set; } = "en";
}

class Program
{
    static void Main()
    {
        var s = new Settings { DarkMode = true };
        Console.WriteLine(s.DarkMode + ", " + s.Volume + ", " + s.Lang);
    }
}

컬렉션 초기화 구문

컬렉션 초기화 구문은 생성 시점에 { } 안에 쉼표로 구분한 요소를 작성하여 리스트, 집합 또는 배열을 채웁니다.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var nums = new List<int> { 1, 2, 3, 4, 5 };
        Console.WriteLine("Count: " + nums.Count);
        Console.WriteLine("Sum: " + Sum(nums));
    }

    static int Sum(List<int> list)
    {
        int t = 0;
        foreach (var n in list) t += n;
        return t;
    }
}

컬렉션 초기화 구문의 작동 방식

컴파일러는 각 요소를 Add(...) 호출로 변환합니다. Add 메서드와 IEnumerable을 갖는 모든 형식에서 이 구문을 사용할 수 있습니다.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var names = new List<string> { "Ann", "Bob", "Cara" };
        foreach (var n in names)
            Console.WriteLine(n);
    }
}

사전 초기화 구문

사전은 중괄호 안에 키/값 쌍을 작성하여 초기화할 수 있으므로 조회 표에 매우 편리합니다.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var ages = new Dictionary<string, int>
        {
            ["Ann"] = 30,
            ["Bob"] = 25
        };
        Console.WriteLine("Ann is " + ages["Ann"]);
    }
}

중첩된 객체 초기화 구문

객체 초기화 구문으로 중첩된 객체도 초기화하여 하나의 식에서 작은 객체 그래프를 만들 수 있습니다.

using System;

class Address
{
    public string City { get; set; }
}

class Customer
{
    public string Name { get; set; }
    public Address Home { get; set; } = new Address();
}

class Program
{
    static void Main()
    {
        var c = new Customer
        {
            Name = "Lin",
            Home = new Address { City = "Tokyo" }
        };
        Console.WriteLine(c.Name + " in " + c.Home.City);
    }
}

객체 컬렉션

두 기능을 결합하면 객체 초기화 구문으로 각 요소를 직접 만든 리스트를 초기화할 수 있습니다.

using System;
using System.Collections.Generic;

class Item
{
    public string Name { get; set; }
    public decimal Price { get; set; }
}

class Program
{
    static void Main()
    {
        var cart = new List<Item>
        {
            new Item { Name = "Pen", Price = 1.5m },
            new Item { Name = "Book", Price = 9.0m }
        };
        decimal total = 0;
        foreach (var i in cart) total += i.Price;
        Console.WriteLine("Total: " + total);
    }
}

초기화 구문과 init 속성

객체 초기화 구문은 init 전용 속성을 설정하는 방법입니다. 이러한 속성은 초기화 중에만 할당할 수 있기 때문입니다.

using System;

class Config
{
    public string Env { get; init; }
    public int Retries { get; init; }
}

class Program
{
    static void Main()
    {
        var c = new Config { Env = "prod", Retries = 3 };
        Console.WriteLine(c.Env + " / " + c.Retries);
    }
}

한데 모아 보기

초기화 구문은 특히 구성 객체와 테스트 데이터의 생성을 선언적이고 읽기 쉽게 만들어 줍니다.

using System;
using System.Collections.Generic;

class Team
{
    public string Name { get; set; }
    public List<string> Members { get; set; } = new List<string>();
}

class Program
{
    static void Main()
    {
        var t = new Team
        {
            Name = "Alpha",
            Members = { "Ann", "Bob", "Cara" }
        };
        Console.WriteLine(t.Name + " has " + t.Members.Count + " members");
    }
}

빠른 확인

초기화 구문에 대한 이해도를 확인해 보세요.

복습

객체 초기화 구문은 new 뒤의 { }에서 공개 멤버를 설정하며 생성자 다음에 실행됩니다. 컬렉션 초기화 구문은 암시적인 Add 호출을 통해 요소를 추가하고, 사전은 키/값 쌍을 지원합니다. 두 구문 모두 중첩할 수 있고 init 속성과 함께 사용할 수 있어 객체 생성을 간결하고 선언적으로 만들어 줍니다.

using System;
using System.Collections.Generic;

class Demo
{
    public string Name { get; set; }
    public List<int> Nums { get; set; } = new List<int>();
}

class Program
{
    static void Main()
    {
        var d = new Demo { Name = "x", Nums = { 1, 2, 3 } };
        Console.WriteLine(d.Name + " " + d.Nums.Count);
    }
}

자주 묻는 질문

“객체 및 컬렉션 이니셜라이저” 강의는 무료인가요?

네 — “객체 및 컬렉션 이니셜라이저” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C# Academy 강의 전체를 잠금 해제할 수 있습니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“객체 및 컬렉션 이니셜라이저”에서 뭘 배우나요?

생성 시점에 속성을 간결하게 설정합니다. 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

C# Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 C# Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“객체 및 컬렉션 이니셜라이저” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 C# Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 C# Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 생성자 정의
  2. this를 사용한 생성자 연결
  3. 객체 및 컬렉션 이니셜라이저
  4. 정적 생성자
← C# Academy(으)로 돌아가기