C# 12.0 기본 생성자(Primary Constructor) 소개

  • 2 minutes to read

C# 12.0에서는 기본 생성자라는 기능이 도입되었습니다. 이는 생성자의 선언과 readonly 멤버의 초기화를 더 간결하게 할 수 있게 해주는 기능입니다. 기본 생성자는 클래스 선언의 일부로 정의되며, 그 매개변수는 클래스 본문 내에서 직접 사용됩니다. 이로 인해 문법이 단순화됩니다.

다음은 C# 12.0을 사용하여 HomeController 클래스를 리팩터링하는 방법입니다:

// C# 12.0 이전 버전에서의 전통적인 생성자 접근 방식
public class HomeController : Controller
{
    private readonly ILogger<HomeController> _logger;

    public HomeController(ILogger<HomeController> logger)
    {
        _logger = logger;
    }

    public IActionResult Index()
    {
        return View();
    }
}

// C# 12.0에서의 기본 생성자 사용
public class HomeController(ILogger<HomeController> logger) : Controller
{
    private readonly ILogger<HomeController> _logger = logger;

    public IActionResult Index()
    {
        return View();
    }
}

// C# 12.0에서 더 간단하게 사용, _logger가 이 클래스 내에서만 사용되고 상속되거나 자식 클래스에서 사용되지 않는다고 가정
public class HomeController(ILogger<HomeController> logger) : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}

첫 번째 전통적인 예시에서는 생성자와 필드 초기화가 명시적으로 이루어집니다. 두 번째 예시에서는 C# 12.0의 기본 생성자를 사용하여 _logger 필드를 직접 선언한 곳에서 초기화할 수 있습니다. 세 번째 예시에서는 _loggerHomeController 내에서만 사용되고 있다고 가정하고 있습니다. 이 경우 _logger를 필드로서 전혀 사용하지 않고, 기본 생성자 매개변수에만 의존할 수 있으므로, 완전히 생략할 수 있습니다.

VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com