.NET 7의 새로운 파일 범위 기능 | File-scoped types

파일 범위 (File-scoped types)

.NET 7에서 새롭게 생긴 파일 범위 기능은 클래스를 .cs 파일 기준으로 제한하여 사용할 수 있도록 제공하는 키워드입니다. 이로 인해 이 키워드가 선언된 물리 파일 안에서만 이 클래스에 접근할 수 있습니다.


아래 FileTest.cs 파일과 AnotherFileTest.cs 파일에 작성된 내용들을 살펴봅시다.

// FileTest.cs
namespace James
{
    public class FileTest
    {
        ...
    }
}

// AnotherFileTest.cs
namespace James
{
    file class FileTest
    {
        ...
    }

    public class JamesTest
    {
        public void Test()
        {
            // 현재 AnotherFileTest.cs 파일에 존재하는 
            // file 키워드 FileTest 인스턴스가 생성됩니다.
            FileTest file = new();
            file.Test();
        }
    }
}

FileTest 클래스가 이미 존재 하지만 물리적인 파일 위치만 다르다면 file 키워드를 통해 동일한 이름의 클래스를 같은 네임스페이스 안에서 공존 시킬 수도 있습니다.


아래 링크는 본문의 내용을 작성하기 위해 참고한 Munib-Butt님의 글 원문입니다.


제가 준비한 내용은 여기까지 입니다.
읽어주셔서 감사합니다. :smile:

6개의 좋아요

오… private protected public internal 에 이은 새로운 접근지정자 군요.

5개의 좋아요

이게 은근히 필요했는데… 굿입니다. 실험해보고 싶은 것은 partial로 파일로 나눴을 경우 나눠진 파일 범위가 될지 그냥 파일하나가 될지… 테스트 해보고 오겠음다 ^^

4개의 좋아요

안되는군요; file 영역은 정말 파일 단위인 것으로

8개의 좋아요

시행착오를 줄여주셔서 감사합니다.

하긴 partial이라는게 결국 class나 method를 나눈거니까 file은 안되는게 취지에 맞을 수도 있겠네요…

partial개념으로 해서 되려면 private이 되어야 할 거 같긴하네요.

2개의 좋아요