카테고리 없음

🌟 C# required 😋 🌟

minsoungdev 2026. 8. 14. 15:17

안녕하세요. 박민성입니다. ☺️

 

오늘은 C#의 required에 대해서 글을 쓰고자 합니다. 🤔

 

1. required란?

required는 객체를 생성할 때 특정 필드나 프로퍼티에 값을 반드시 넣도록 강제하는 C# 키워드입니다.

public class PlayerData
{
    public required string Name { get; set; }
}

이렇게 선언한다면

PlayerData player = new PlayerData(); // XXXX

이런식으로 객체를 만들 수가 없습니다!!

PlayerData player = new PlayerData // OOOO
{
    Name = "Player"
};

Name을 required로 선언했기 때문에 "무적권" 그 객체를 만들 때에는 

required가 붙은 Name에 값을 넣어줘야 합니다.

 

required는 이 멤버는 객체 생성 시 반드시 초기화되어야 한다는 것을 설정해주는 키워드입니다. (필수 한정자)

required는 객체에서 어떤 값이 필수로 있어야 하는 데이터에 사용됩니다.

약간 데이터 테이블에 기본키(Primary Key)가 생각나는 문법입니다.

2. 생성자와 차이

생성자를 사용해도 필수 값을 강제할 수 있습니다.

public class PlayerData
{
    public string Name { get; }

    public PlayerData(string name)
    {
        Name = name;
    }
}
PlayerData player = new PlayerData("Player");

required는 비슷한 목적으로 사용할 수 있지만 객체 초기화 문법을 유지할 수가 있습니다.

PlayerData player = new PlayerData
{
    Name = "Player",
    Level = 10
};

멤버가 많아질수록 어떤 값에 무엇을 넣는지 보기 쉬운 편입니다.

 

생성자는 생성 과정 자체에서 값을 전달하는 느낌이고

required는 객체 초기화 과정에서 필수 멤버를 강제시키는 느낌입니다.

 

당연히 여러 멤버에 사용 가능합니다.

public class CharacterData
{
    public required string Id { get; init; }
    public required string Name { get; init; }

    public int Level { get; init; }
}
CharacterData data = new CharacterData
{
    Id = "player_001",
    Name = "dksgur"
};

확실히 필수 값이 많아지면 가독성인 측면에서 생성자보다는 required가 좋아 보입니다.

 

3. 상속에서의 동작

부모 클래스에 required 멤버가 있으면 자식 클래스를 만들 때도 그 값을 설정해야 합니다.

public class Character
{
    public required string Name { get; init; }
}

public class Player : Character
{
    public int Level { get; init; }
}
Player player = new Player
{
    Name = "Player",
    Level = 10
};

처럼 부모 클래스의 required 멤버까지 초기화해야 합니다.

상속이라는 것이 자식은 부모를 포함하고 크기 더 큰 존재인 느낌이기 때문입니다.

즉! required 조건은 상속받은 클래스에서도 이어집니다.

 

4. 주의점

required가 null을 완전히 막는 것은 아닙니다!!(중요)

public required string Name { get; set; }
이 코드는 Name에 반드시 정상 문자열이 들어가야 하는 것이 아닌 Name을 초기화해야 한다는 것입니다.

즉! required는 초기화 여부를 강제하는 기능이지 값 자체가 올바른지 검증하는 기능은 아닙니다.

그렇기 때문에 required ≠ 유효성 검사 ≠ null 완전 방지   입니다.
 

 

오늘은 C#에 required 에 대해서 알아보았습니다.

또 이렇게 C# 문법에 대한 지식이 +1 되었습니다... C# 문법에 대한 지식이 Max를 찍을 때까지 정진하겠습니다!

 

오늘의 노래 추천은

AJR - Karma 이라는 노래입니다.

마음이 뭉클해지는 노래입니다

 

내일은 더욱 좋은 글을 써보도록 노력해보겠습니다. 

봐주셔서 감사합니다. ☺️