0Pricing
C# Academy · 강의

멤버에서 매개 변수 캡처

형식 전체에서 기본 생성자 매개 변수를 사용합니다.

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

멤버에서 매개 변수 사용하기

기본 생성자의 강력한 기능은 매개 변수를 멤버인 메서드, 속성, 필드 초기화 구문 안에서 사용할 수 있다는 데 있습니다. 컴파일러가 필요에 따라 저장 공간을 마련합니다.

using System;

class Multiplier(int factor) {
    public int Apply(int n) => n * factor;
}

Console.WriteLine(new Multiplier(3).Apply(5)); // 15

캡처와 초기화 전용 사용 비교

매개 변수를 필드나 속성 초기화 구문에서만 사용하면 추가 저장 공간이 필요하지 않습니다. 메서드에서 사용하면 컴파일러가 해당 매개 변수를 숨겨진 필드로 캡처합니다.

using System;

class A(int x) {
    public int Stored = x;     // initializer only
}
class B(int x) {
    public int Get() => x;     // captured into a field
}

Console.WriteLine(new A(7).Stored); // 7
Console.WriteLine(new B(9).Get());  // 9

매개 변수는 변경할 수 있습니다

기본 생성자 매개 변수는 일반 매개 변수처럼 작동하므로 읽기 전용으로 다루지 않는 한 인스턴스 안에서 변경할 수 있습니다. 매개 변수를 변경하면 캡처된 필드도 변경됩니다.

using System;

class Toggle(bool on) {
    public void Flip() => on = !on;
    public bool State => on;
}

var t = new Toggle(false);
t.Flip();
Console.WriteLine(t.State); // True

읽기 전용 속성으로 노출하기

일반적인 방법은 get 접근자만 있는 속성을 통해 매개 변수를 노출하는 것입니다. 이렇게 하면 매개 변수를 내부에 유지하면서 깔끔한 공개 표면을 제공할 수 있습니다.

using System;

class User(string email) {
    public string Email { get; } = email;
}

Console.WriteLine(new User("a@b.com").Email); // a@b.com

매개 변수로 계산된 속성 만들기

매개 변수는 식 본문으로 작성된 계산된 속성에 자연스럽게 사용할 수 있습니다.

using System;

class Money(decimal amount, string currency) {
    public string Display => amount.ToString("0.00") + " " + currency;
}

Console.WriteLine(new Money(9.5m, "USD").Display); // 9.50 USD

여러 메서드에서 매개 변수 사용하기

동일한 캡처된 매개 변수를 여러 메서드에서 공유할 수 있으며, 생성 시 초기화된 비공개 필드처럼 작동합니다.

using System;

class Range2(int lo, int hi) {
    public bool Contains(int n) => n >= lo && n <= hi;
    public int Clamp(int n) => Math.Max(lo, Math.Min(hi, n));
}

var r = new Range2(0, 10);
Console.WriteLine(r.Contains(5)); // True
Console.WriteLine(r.Clamp(15));   // 10

참조 형식 캡처

캡처된 참조 형식 매개 변수를 사용하면 주입된 종속성을 저장하고 모든 메서드에서 호출할 수 있습니다.

using System;
using System.Collections.Generic;

class Repo(List<string> store) {
    public void Add(string item) => store.Add(item);
    public int Count => store.Count;
}

var list = new List<string>();
var repo = new Repo(list);
repo.Add("x");
Console.WriteLine(repo.Count); // 1

의도치 않은 이중 저장 방지

매개 변수를 필드에 할당하면서 메서드에서도 해당 매개 변수를 사용하면 값이 두 번 저장될 수 있습니다. 명확성을 위해 한 가지 방식만 사용하세요.

using System;

class Clean(int x) {
    // expose once via property, reference property in methods
    public int Value { get; } = x;
    public int Doubled() => Value * 2;
}

Console.WriteLine(new Clean(4).Doubled()); // 8

람다의 매개 변수

필드와 마찬가지로 클래스 내부에 정의된 람다에서도 매개 변수를 캡처할 수 있습니다.

using System;
using System.Collections.Generic;
using System.Linq;

class Filter(int threshold) {
    public IEnumerable<int> KeepAbove(IEnumerable<int> xs) =>
        xs.Where(n => n > threshold);
}

var f = new Filter(3);
Console.WriteLine(string.Join(",", f.KeepAbove(new[]{1,2,3,4,5}))); // 4,5

범위의 수명

캡처된 매개 변수는 개체가 존재하는 동안 유지됩니다. 사실상 인스턴스 상태이므로 메서드 호출 사이에 초기화된다고 가정하지 마세요.

using System;

class Accumulator(int seed) {
    private int total = seed;
    public int Add(int n) { total += n; return total; }
}

var a = new Accumulator(100);
Console.WriteLine(a.Add(1)); // 101
Console.WriteLine(a.Add(1)); // 102

함께 적용하기

이 서비스는 두 개의 종속성을 캡처하고 여러 메서드에서 사용하여, 실제 환경에서 흔히 볼 수 있는 형태를 보여 줍니다.

using System;

class PriceService(decimal taxRate, string currency) {
    public decimal WithTax(decimal net) => net * (1 + taxRate);
    public string Format(decimal v) => v.ToString("0.00") + " " + currency;
}

var s = new PriceService(0.2m, "EUR");
Console.WriteLine(s.Format(s.WithTax(100m))); // 120.00 EUR

빠른 확인

주 생성자 매개 변수가 어떻게 저장되는지 확인하세요.

요약

주 생성자 매개 변수를 멤버에서 사용하는 방법을 배웠습니다.

  • 메서드에서 사용하면 매개 변수가 숨겨진 필드에 캡처됩니다.
  • 초기화 구문에서만 사용하면 추가 저장 공간이 필요하지 않습니다.
  • 깔끔한 외부 인터페이스를 위해 읽기 전용 속성으로 노출하세요.
  • 개체의 수명 동안 인스턴스 상태처럼 동작합니다.

자주 묻는 질문

“멤버에서 매개 변수 캡처” 강의는 무료인가요?

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

“멤버에서 매개 변수 캡처”에서 뭘 배우나요?

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

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

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

“멤버에서 매개 변수 캡처” 강의는 얼마나 걸리나요?

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

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

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

이 강의의 모든 강의

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