required 한정자
호출자가 필수 속성을 설정하도록 강제합니다.
required 한정자은(는) CoddyKit의 무료 C# Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C# Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
required 수정자
required 수정자는 호출자가 개체를 만들 때 속성 또는 필드를 설정하도록 강제합니다. 「값을 빠뜨렸습니다」라는 오류가 실행 시간이 아닌 컴파일 시간에 발생하도록 합니다.
using System;
class Person {
public required string Name { get; init; }
}
var p = new Person { Name = "Ada" };
Console.WriteLine(p.Name); // Adarequired 멤버를 생략하면 컴파일되지 않습니다
호출자가 required 멤버를 생략하면 프로그램이 실행되기 전에 컴파일러가 오류를 보고합니다.
using System;
class Person {
public required string Name { get; init; }
}
// var bad = new Person { }; // compile error: Name is required
var good = new Person { Name = "Lin" };
Console.WriteLine(good.Name); // Linrequired와 초기화
required는 초기화와 자연스럽게 함께 사용할 수 있습니다. 생성할 때 값을 제공해야 하며 이후에는 변경할 수 없습니다.
using System;
class Config {
public required string Url { get; init; }
public int Timeout { get; init; } = 30;
}
var c = new Config { Url = "https://api" };
Console.WriteLine(c.Url + " " + c.Timeout); // https://api 30required와 설정
설정 가능한 속성도 required로 지정할 수 있습니다. 반드시 초기화해야 하지만 이후에는 변경할 수 있습니다.
using System;
class Box {
public required int Size { get; set; }
}
var b = new Box { Size = 5 };
b.Size = 10; // still mutable
Console.WriteLine(b.Size); // 10required 필드
속성뿐 아니라 필드도 required로 지정할 수 있습니다.
using System;
class Token {
public required string Value;
}
var t = new Token { Value = "abc123" };
Console.WriteLine(t.Value); // abc123생성자와 required
생성자가 required 멤버를 설정한다면 해당 생성자를 사용하는 호출자는 더 이상 그 멤버를 설정할 필요가 없습니다. 컴파일러에 이를 알리려면 [SetsRequiredMembers]를 사용하세요.
using System;
using System.Diagnostics.CodeAnalysis;
class Person {
public required string Name { get; init; }
[SetsRequiredMembers]
public Person(string name) => Name = name;
}
Console.WriteLine(new Person("Sam").Name); // Samrequired와 선택 사항 혼합하기
필수로 표시한 멤버만 반드시 필요하며, 나머지 멤버는 기본값을 사용하는 선택 사항으로 남습니다.
using System;
class Account {
public required string Owner { get; init; }
public decimal Balance { get; init; } = 0m;
}
var a = new Account { Owner = "Kai" };
Console.WriteLine(a.Owner + " " + a.Balance); // Kai 0상속에서의 required
required 멤버는 상속됩니다. 파생 클래스에서 자체 required 멤버를 추가할 수 있으며, 모든 필수 멤버를 충족해야 합니다.
using System;
class Base { public required int Id { get; init; } }
class Item : Base { public required string Name { get; init; } }
var i = new Item { Id = 1, Name = "Pen" };
Console.WriteLine(i.Id + " " + i.Name); // 1 Pen복잡한 생성자 대체하기
required + init은 복잡한 생성자를 대체하는 경우가 많습니다. 읽기 쉬운 개체 초기화 구문으로 필수 멤버를 지정할 수 있습니다.
using System;
class Email {
public required string To { get; init; }
public required string Subject { get; init; }
public string Body { get; init; } = "";
}
var e = new Email { To = "a@b.com", Subject = "Hi" };
Console.WriteLine(e.To + " | " + e.Subject); // a@b.com | Hi의도를 스스로 설명하기
멤버를 required로 표시하면 어떤 값이 필수인지 문서화되므로 해당 형식을 올바르게 사용하기 쉬워집니다.
using System;
class Registration {
public required string Username { get; init; }
public required string Password { get; init; }
public bool Newsletter { get; init; }
}
var r = new Registration { Username = "ada", Password = "x" };
Console.WriteLine(r.Username); // ada함께 적용하기
required, 선택 사항, 유효성 검사가 적용된 멤버를 결합한 형식입니다.
using System;
class Server {
public required string Host { get; init; }
public int Port { get; init; } = 8080;
public string Address => Host + ":" + Port;
}
var s = new Server { Host = "localhost" };
Console.WriteLine(s.Address); // localhost:8080빠른 확인
required 수정자가 무엇을 보장하는지 확인하세요.
요약
required 수정자를 배웠습니다.
- 생성할 때 호출자가 멤버를 초기화하도록 강제하며, 컴파일러가 이를 확인합니다.
init과 함께 사용하면 필수이면서 변경 불가능한 멤버를 만들 수 있습니다.[SetsRequiredMembers]를 사용하면 생성자가 해당 요구 사항을 충족할 수 있습니다.- required 멤버는 상속됩니다.
자주 묻는 질문
“required 한정자” 강의는 무료인가요?
네 — “required 한정자” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C# Academy 강의 전체를 잠금 해제할 수 있습니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“required 한정자”에서 뭘 배우나요?
호출자가 필수 속성을 설정하도록 강제합니다. 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
C# Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 C# Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“required 한정자” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 C# Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 C# Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- init 전용 setter
- required 한정자
- 변경 불가능한 객체 패턴
- 레코드의 with 식