자동 구현 프로퍼티
Coddy C# 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 70개 중 10번째.
자동 구현 프로퍼티(Auto-implemented properties)를 사용하면 명시적인 지원 필드(backing field)를 작성하지 않고도 프로퍼티를 선언할 수 있습니다. 컴파일러는 배후에서 자동으로 숨겨진 private 필드를 생성합니다.
이렇게 장황한 코드를 작성하는 대신:
public class Product
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}간단히 다음과 같이 작성할 수 있습니다:
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
}선언부에서 직접 기본값을 설정할 수도 있습니다:
public class Product
{
public string Name { get; set; } = "Unnamed";
public decimal Price { get; set; } = 0.0m;
public bool IsAvailable { get; set; } = true;
}자동 구현 프로퍼티는 게터(getter)나 세터(setter)에 유효성 검사나 사용자 정의 로직이 필요하지 않을 때 이상적입니다. 이는 클래스를 깔끔하게 유지하고 상용구 코드를 크게 줄여줍니다.
챌린지
쉬움상점의 품목을 추적하기 위해 자동 구현 프로퍼티(auto-implemented properties)를 사용하는 간단한 재고 관리 시스템을 구축해 보겠습니다.
코드를 구성하기 위해 두 개의 파일을 생성합니다:
Item.cs:Inventory네임스페이스 안에Name(string),Price(decimal),InStock(bool)에 대한 자동 구현 프로퍼티를 가진Item클래스를 정의합니다. 기본값을 설정하세요:Name은"Unknown"으로,Price는0.0m으로,InStock은true로 기본 설정되어야 합니다.Program.cs: 메인 파일에서 객체 초기화자(object initializers)를 사용하여 두 개의Item객체를 생성합니다. 입력으로부터 각 품목의 이름과 가격을 읽어온 다음, 각 품목의 상세 정보를 출력합니다.
네 개의 입력을 받게 됩니다:
- 첫 번째 품목의 이름
- 첫 번째 품목의 가격
- 두 번째 품목의 이름
- 두 번째 품목의 가격
각 품목을 다음 형식으로 출력하세요:
Item: {Name}, Price: {Price}, In Stock: {InStock}예를 들어, 입력값이 Laptop, 999.99, Mouse, 25.50이라면 출력은 다음과 같아야 합니다:
Item: Laptop, Price: 999.99, In Stock: True
Item: Mouse, Price: 25.50, In Stock: True치트 시트
자동 구현 속성(Auto-implemented properties)을 사용하면 명시적인 지원 필드(backing field)를 작성하지 않고도 속성을 선언할 수 있습니다. 컴파일러가 자동으로 숨겨진 프라이빗 필드를 생성합니다.
기본 구문:
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
}기본값 설정:
public class Product
{
public string Name { get; set; } = "Unnamed";
public decimal Price { get; set; } = 0.0m;
public bool IsAvailable { get; set; } = true;
}자동 구현 속성은 getter나 setter에 유효성 검사나 사용자 정의 로직이 필요하지 않을 때 이상적입니다.
직접 해보기
using System;
using Inventory;
class Program
{
public static void Main(string[] args)
{
// 첫 번째 아이템에 대한 입력을 읽습니다
string name1 = Console.ReadLine();
decimal price1 = Convert.ToDecimal(Console.ReadLine());
// 두 번째 아이템에 대한 입력을 읽습니다
string name2 = Console.ReadLine();
decimal price2 = Convert.ToDecimal(Console.ReadLine());
// TODO: 객체 초기화자를 사용하여 두 개의 Item 객체를 생성하세요
// 입력값으로 Name과 Price 속성을 설정하세요
// TODO: 각 아이템의 상세 정보를 다음 형식으로 출력하세요:
// Item: {Name}, Price: {Price}, In Stock: {InStock}
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.