Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 |
Tags
- Tikz
- Unity Editor
- Merge Sort
- 보간탐색
- 스택
- PGF
- 수학문서
- non-nullable
- dfs
- quick sort
- LU분해
- 큐
- 백준
- programable switch
- 재귀
- 정렬
- 수치미분
- 시간복잡도
- 정수자료형
- [Required]
- 파이썬
- 자료구조
- APIE
- naive sort
- 탐색
- 실수자료형
- 알고리즘
- BFS
- C#
- C++
Archives
- Today
- Total
코젤브
C# [Required] vs required 차이점 본문
ASP.NET core 를 활용해서 프로젝트를 진행하는 중에 DTO 작성 시 계속 노란줄이 생겨서.. 스트레스 받았다...
경고인데, 아래와 같다.
Non-nullable property 'HiveToken' must contain a non null value when exiting constructor.
Consider declaring the property as nullable.
그래서 [Required] 달아줬는데, required 로 해야지 해결되는 경우가 많아서. 아니 대체 두개 차이가 뭔데? 라는 생각과 함께 쓰는 블로그이다.
[Required] 어트리뷰트와 required 키워드 사이의 차이
- ASP.NET Core에서 데이터 검증과 모델 구성에 중요함!
- 여기서 언급된 두 용어는 서로 다른 문맥에서 사용되는데, 각각의 사용법과 적용 방식을 설명하겠습니다.
[Required] 어트리뷰트 (Attribute)
- [Required]는 System.ComponentModel.DataAnnotations 네임스페이스에서 제공하는 어트리뷰트입니다.
- 이 어트리뷰트는 주로 데이터 모델이나 DTO(Data Transfer Object)의 프로퍼티에 적용되어, 해당 프로퍼티가 반드시 필요하다는 것을 명시합니다.
- 모델 검증 시 ASP.NET Core의 MVC 모델 바인딩에서 해당 필드가 비어 있지 않아야 함을 검증할 때 사용
- 예를 들어, 사용자 입력 폼에서 필수 정보가 누락되지 않도록 하는 데 사용됩니다.
public class GameModel
{
[Required]
public string GameName { get; set; }
}
위 코드에서 GameName 프로퍼티는 사용자가 폼을 제출할 때 반드시 값을 제공해야 합니다. 이 값이 제공되지 않으면, 모델 검증이 실패하고 사용자에게 오류 메시지가 표시될 수 있습니다.
required 키워드
- C# 9.0부터 도입된 required 키워드는 주로 레코드 타입에서 사용됩니다.
- 레코드 : 불변성을 가진 객체를 간단히 정의할 수 있게 해주는 새로운 타입 선언 방식
- required 키워드는 해당 필드가 레코드 생성자에서 반드시 초기화되어야 함을 명시합니다.
- 이를 통해 객체의 일관성을 보장하고, 필수 필드가 누락되지 않도록 합니다.
위 코드에서 GameRecord의 인스턴스를 생성할 때 GameName 프로퍼티는 반드시 값을 할당받아야 합니다. 그렇지 않으면 컴파일 타임에 오류가 발생합니다.
요약하면, [Required] 어트리뷰트는 런타임에 데이터의 유효성을 검사하는 데 사용되며, 주로 폼 데이터의 유효성 검증에 적용됩니다. 반면, required 키워드는 컴파일 시간에 필수 필드가 누락되지 않도록 강제하는 데 사용되며, 주로 레코드 타입의 불변성을 보장하는 데에 사용됩니다.
'컴공의 일상 > C#' 카테고리의 다른 글
namespace 란? (0) | 2024.04.17 |
---|---|
C# 공부 시작! (0) | 2024.04.11 |