자동 구현 속성
간결한 자동 구문으로 속성을 선언합니다.
자동 구현 속성은(는) 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 자동 구현 속성
- 백업 필드를 사용하는 전체 속성
- 식 본문 멤버
- 인덱서