Menu
Coddy logo textTech

자동 구현 프로퍼티

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)에 유효성 검사나 사용자 정의 로직이 필요하지 않을 때 이상적입니다. 이는 클래스를 깔끔하게 유지하고 상용구 코드를 크게 줄여줍니다.

challenge icon

챌린지

쉬움

상점의 품목을 추적하기 위해 자동 구현 프로퍼티(auto-implemented properties)를 사용하는 간단한 재고 관리 시스템을 구축해 보겠습니다.

코드를 구성하기 위해 두 개의 파일을 생성합니다:

  • Item.cs: Inventory 네임스페이스 안에 Name (string), Price (decimal), InStock (bool)에 대한 자동 구현 프로퍼티를 가진 Item 클래스를 정의합니다. 기본값을 설정하세요: Name"Unknown"으로, Price0.0m으로, InStocktrue로 기본 설정되어야 합니다.
  • 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}
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨