멤버에서 매개 변수 캡처
형식 전체에서 기본 생성자 매개 변수를 사용합니다.
멤버에서 매개 변수 캡처은(는) 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 클래스의 기본 생성자
- 멤버에서 매개 변수 캡처
- 구조체의 기본 생성자
- 속성 및 기본 형식과 결합