객체 및 컬렉션 이니셜라이저
생성 시점에 속성을 간결하게 설정합니다.
객체 및 컬렉션 이니셜라이저은(는) 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 생성자 정의
- this를 사용한 생성자 연결
- 객체 및 컬렉션 이니셜라이저
- 정적 생성자