0Pricing
C# Academy · 강의

자동 구현 속성

간결한 자동 구문으로 속성을 선언합니다.

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

속성이란 무엇인가요

속성은 외부에서 보면 필드처럼 보이지만 접근자 메서드(get 및 set)가 뒷받침합니다. 속성을 사용하면 데이터를 노출하면서 읽고 쓰는 방식을 제어할 수 있습니다.

using System;

class Program
{
    public string Name { get; set; }

    static void Main()
    {
        var p = new Program();
        p.Name = "Coddy";
        Console.WriteLine(p.Name);
    }
}

자동 구현 구문

자동 구현 속성은 { get; set; }을 사용합니다. 컴파일러가 숨겨진 뒷받침 필드를 대신 생성하므로 직접 작성할 필요가 없습니다.

using System;

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

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

필드보다 속성을 사용하는 이유

공개 속성은 안정적인 프로그래밍 인터페이스를 제공합니다. 나중에 호출하는 코드에 영향을 주지 않고 유효성 검사를 추가하거나 저장 방식을 변경할 수 있습니다. 공개 필드는 그렇게 할 수 없습니다.

using System;

class Account
{
    public decimal Balance { get; set; }
}

class Program
{
    static void Main()
    {
        var a = new Account();
        a.Balance = 100.50m;
        Console.WriteLine("Balance: " + a.Balance);
    }
}

읽기 전용 자동 속성

set을 생략하면 속성이 읽기 전용이 됩니다. 생성자나 초기화 프로그램에서만 값을 할당할 수 있으므로 기본적으로 변경할 수 없는 값이 됩니다.

using System;

class Circle
{
    public double Radius { get; }

    public Circle(double radius)
    {
        Radius = radius;
    }
}

class Program
{
    static void Main()
    {
        var c = new Circle(5.0);
        Console.WriteLine("Radius: " + c.Radius);
    }
}

속성 기본값

= value;를 사용하면 자동 속성에 초기값을 지정할 수 있습니다. 이 초기화는 객체가 생성될 때 모든 생성자 본문보다 먼저 실행됩니다.

using System;

class Settings
{
    public bool DarkMode { get; set; } = true;
    public int Volume { get; set; } = 50;
}

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

비공개 설정자

private set을 사용하면 클래스 내부에서는 값을 변경할 수 있지만 외부 코드에서는 수정할 수 없습니다. 이는 캡슐화에 자주 사용하는 패턴입니다.

using System;

class Counter
{
    public int Count { get; private set; }

    public void Increment()
    {
        Count++;
    }
}

class Program
{
    static void Main()
    {
        var counter = new Counter();
        counter.Increment();
        counter.Increment();
        Console.WriteLine("Count: " + counter.Count);
    }
}

초기화 전용 설정자

init 접근자(C# 9 이상)를 사용하면 객체를 초기화하는 동안에만 값을 할당할 수 있습니다. 생성이 끝나면 값이 고정됩니다.

using System;

class Product
{
    public string Name { get; init; }
    public decimal Price { get; init; }
}

class Program
{
    static void Main()
    {
        var p = new Product { Name = "Book", Price = 12.99m };
        Console.WriteLine(p.Name + ": " + p.Price);
    }
}

다양한 접근 수준의 속성

속성에는 일반적인 접근 제한자가 적용됩니다. 공개 가져오기와 비공개 설정자를 조합하거나, 완전히 내부적인 속성을 만들 수도 있습니다.

using System;

class User
{
    public string Id { get; private set; }

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

class Program
{
    static void Main()
    {
        var u = new User("u-001");
        Console.WriteLine("User Id: " + u.Id);
    }
}

계산처럼 보이는 자동 속성

자동 속성은 데이터를 저장할 뿐 계산하지는 않습니다. 계산된 값이 필요하면 완전한 속성을 사용해야 합니다(뒤에서 다룹니다). 지금은 자동 속성을 단순한 저장 공간으로 생각하세요.

using System;

class Rectangle
{
    public double Width { get; set; }
    public double Height { get; set; }
}

class Program
{
    static void Main()
    {
        var r = new Rectangle { Width = 4, Height = 3 };
        double area = r.Width * r.Height;
        Console.WriteLine("Area: " + area);
    }
}

자동 속성 업데이트

변수와 마찬가지로 설정 가능한 자동 속성을 원하는 만큼 읽고 다시 할당할 수 있습니다.

using System;

class Player
{
    public int Score { get; set; }
}

class Program
{
    static void Main()
    {
        var player = new Player();
        player.Score = 10;
        player.Score += 5;
        player.Score *= 2;
        Console.WriteLine("Score: " + player.Score);
    }
}

종합하기

일반적인 모델 클래스는 대부분 자동 속성으로 구성됩니다. 일부는 설정 가능하고, 일부는 초기화 전용이며, 일부는 비공개 설정자를 사용합니다. 이렇게 하면 클래스를 간결하고 명확하게 유지할 수 있습니다.

using System;

class BankAccount
{
    public string Owner { get; init; }
    public decimal Balance { get; private set; }

    public void Deposit(decimal amount)
    {
        Balance += amount;
    }
}

class Program
{
    static void Main()
    {
        var acct = new BankAccount { Owner = "Lin" };
        acct.Deposit(250m);
        Console.WriteLine(acct.Owner + ": " + acct.Balance);
    }
}

간단한 확인

자동 구현 속성에 대한 이해도를 확인해 보세요.

복습

자동 구현 속성은 { get; set; }을 사용하며, 컴파일러가 뒷받침 필드를 생성합니다. 변형으로는 읽기 전용 { get; }, 변경을 제어하는 private set, 한 번만 설정할 수 있는 값에 사용하는 init이 있습니다. 자동 구현 속성은 클래스에서 데이터를 노출하는 기본적인 방법입니다.

using System;

class Demo
{
    public string A { get; set; } = "settable";
    public string B { get; } = "read-only";
    public string C { get; init; } = "init-only";
}

class Program
{
    static void Main()
    {
        var d = new Demo { C = "changed-at-init" };
        Console.WriteLine(d.A + ", " + d.B + ", " + d.C);
    }
}

자주 묻는 질문

“자동 구현 속성” 강의는 무료인가요?

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

“자동 구현 속성”에서 뭘 배우나요?

간결한 자동 구문으로 속성을 선언합니다. 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

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

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

“자동 구현 속성” 강의는 얼마나 걸리나요?

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

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

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

이 강의의 모든 강의

  1. 자동 구현 속성
  2. 백업 필드를 사용하는 전체 속성
  3. 식 본문 멤버
  4. 인덱서
← C# Academy(으)로 돌아가기