C# Academy · 강의

속성 및 기본 형식과 결합

매개 변수를 기본 형식과 속성으로 전달합니다.

레슨 4/413개 단계

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

주 생성자와 상속 결합하기

주 생성자가 있는 파생 클래스는 헤더에서 : Base(args) 구문을 사용해 매개 변수를 기본 클래스에 전달할 수 있습니다.

using System;

class Animal(string name) {
    public string Name => name;
}

class Dog(string name) : Animal(name) {
    public string Speak() => Name + " says Woof";
}

Console.WriteLine(new Dog("Rex").Speak()); // Rex says Woof

매개 변수 일부 전달하기

파생 클래스는 base보다 많은 매개 변수를 받고 그중 관련된 매개 변수만 상위로 전달할 수 있습니다.

using System;

class Shape(string color) {
    public string Color => color;
}

class Box(string color, int size) : Shape(color) {
    public int Size => size;
}

var b = new Box("red", 5);
Console.WriteLine(b.Color + " " + b.Size); // red 5

base에 전달할 인수 변환하기

헤더에서 파생 클래스의 매개 변수로부터 base 생성자에 전달할 인수를 인라인으로 계산할 수 있습니다.

using System;

class Label(string text) {
    public string Text => text;
}

class UpperLabel(string text) : Label(text.ToUpper()) {
}

Console.WriteLine(new UpperLabel("hi").Text); // HI

속성도 함께 추가하기

주 생성자와 명시적 속성을 함께 사용할 수 있습니다. 선언할 때 매개 변수로부터 속성을 초기화하세요.

using System;

class Product(string name, decimal price) {
    public string Name { get; } = name;
    public decimal Price { get; set; } = price;
}

var p = new Product("Book", 12m);
p.Price = 10m;
Console.WriteLine(p.Name + " " + p.Price); // Book 10

base 매개 변수와 파생 클래스에서의 사용

base에 전달한 후에도 파생 클래스의 주 생성자 매개 변수를 파생 클래스 본문에서 계속 사용할 수 있습니다.

using System;

class Base(int id) {
    public int Id => id;
}

class Item(int id, string label) : Base(id) {
    public string Describe() => "#" + id + ": " + label;
}

Console.WriteLine(new Item(7, "Widget").Describe()); // #7: Widget

레코드와 주 생성자

레코드는 주 생성자를 사용해 공개 초기화 전용 속성을 자동으로 생성합니다. 위치 지정 레코드가 가장 간결한 형태입니다.

using System;

record Person(string First, string Last) {
    public string Full => First + " " + Last;
}

Console.WriteLine(new Person("Ada", "Lovelace").Full); // Ada Lovelace

레코드 상속

파생 레코드는 위치에 따라 base 레코드에 매개 변수를 전달하고, 결합된 속성 집합을 생성합니다.

using System;

record Vehicle(string Make);
record Car(string Make, int Doors) : Vehicle(Make);

var c = new Car("Toyota", 4);
Console.WriteLine(c.Make + " " + c.Doors); // Toyota 4

base 호출 전 유효성 검사

유효성 검사가 필요하면 throw 식을 사용하는 속성 초기화 구문에서 수행하세요. base 호출은 여전히 먼저 실행됩니다.

using System;

class Base(string tag) { public string Tag => tag; }

class Node(string tag) : Base(tag) {
    public string Tag2 { get; } =
        tag.Length > 0 ? tag : throw new ArgumentException("empty");
}

Console.WriteLine(new Node("a").Tag); // a

캡처된 매개 변수와 속성 혼합하기

일부 매개 변수는 캡처된 비공개 상태로 유지하고 다른 매개 변수는 속성으로 노출하여 공개 인터페이스를 원하는 형태로 구성할 수 있습니다.

using System;

class Order(int id, decimal total) {
    public decimal Total { get; } = total; // public
    public string Reference() => "ORD-" + id;   // id stays private
}

var o = new Order(42, 99m);
Console.WriteLine(o.Reference() + " " + o.Total); // ORD-42 99

속성 기본값

매개 변수와 연결되지 않은 속성에도 기본 초기화 값을 지정할 수 있으므로 주 생성자 매개 변수와 자유롭게 함께 사용할 수 있습니다.

using System;

class Session(string user) {
    public string User { get; } = user;
    public bool Active { get; set; } = true;
}

var s = new Session("kai");
Console.WriteLine(s.User + " " + s.Active); // kai True

함께 적용하기

base에 매개 변수를 전달하고 속성을 추가하며 계산된 멤버를 노출하는 파생 클래스입니다.

using System;

class Employee(string name) {
    public string Name => name;
}

class Manager(string name, int teamSize) : Employee(name) {
    public int TeamSize { get; } = teamSize;
    public string Title => Name + " (manages " + TeamSize + ")";
}

Console.WriteLine(new Manager("Sam", 5).Title); // Sam (manages 5)

빠른 확인

주 생성자가 base 클래스에 매개 변수를 전달하는 방식을 확인하세요.

요약

주 생성자를 속성 및 base 클래스와 결합하는 방법을 배웠습니다.

  • class D(...) : Base(args)는 base에 매개 변수를 전달합니다.
  • base에 전달할 인수는 인라인으로 계산할 수 있습니다.
  • 선언할 때 매개 변수에서 속성을 초기화할 수 있습니다.
  • 레코드는 위치 지정 매개 변수에서 공개 초기화 전용 속성을 생성합니다.
무료로 시작

AI 튜터와 함께 C#을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
93
레슨
346

자주 묻는 질문

“속성 및 기본 형식과 결합” 강의는 무료인가요?

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

“속성 및 기본 형식과 결합”에서 뭘 배우나요?

매개 변수를 기본 형식과 속성으로 전달합니다. 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

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

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

“속성 및 기본 형식과 결합” 강의는 얼마나 걸리나요?

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

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

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

이 강의의 모든 강의

  1. 클래스의 기본 생성자
  2. 멤버에서 매개 변수 캡처
  3. 구조체의 기본 생성자
  4. 속성 및 기본 형식과 결합
← C# Academy(으)로 돌아가기