파일(C# 참조)

C# 11부터 file 상황별 키워드는 형식 한정자입니다.

file 한정자는 최상위 형식의 범위 및 표시 영역을 선언된 파일로 제한합니다. file 한정자는 일반적으로 소스 생성기에서 작성한 형식에 적용됩니다. 파일 로컬 형식은 소스 생성기에 생성된 형식 간의 이름 충돌을 방지하는 편리한 방법을 제공합니다. file 한정자는 다음 예제와 같이 파일 로컬 형식을 선언합니다.

file class HiddenWidget
{
    // implementation
}

파일 로컬 형식 내에 중첩된 모든 형식은 선언된 파일 내에서만 표시됩니다. 어셈블리의 다른 형식은 파일 로컬 형식과 동일한 이름을 사용할 수 있습니다. 파일 로컬 형식은 선언된 파일에만 표시되므로 이러한 형식은 명명 충돌을 초래하지 않습니다.

파일 로컬 형식은 file 범위보다 표시 영역이 큰 멤버의 반환 형식 또는 매개 변수 형식일 수 없습니다. 파일 로컬 형식은 file 범위보다 표시 영역이 큰 형식의 필드 멤버일 수 없습니다. 그러나 표시 유형이 큰 형식은 파일 로컬 인터페이스 형식을 암시적으로 구현할 수 있습니다. 또한 형식은 파일 로컬 인터페이스를 명시적으로 구현할 수 있지만 명시적 구현은 file 범위 내에서만 사용할 수 있습니다.

다음 예제에서는 파일 로컬 형식을 사용하여 작업자 메서드를 제공하는 공용 형식을 보여 줍니다. 또한 public 형식은 파일 로컬 인터페이스를 암시적으로 구현합니다.

// In File1.cs:
file interface IWidget
{
    int ProvideAnswer();
}

file class HiddenWidget
{
    public int Work() => 42;
}

public class Widget : IWidget
{
    public int ProvideAnswer()
    {
        var worker = new HiddenWidget();
        return worker.Work();
    }
}

다른 원본 파일에서 파일 로컬 형식과 이름이 같은 형식을 선언할 수 있습니다. 파일 로컬 형식은 표시되지 않습니다.

// In File2.cs:
// Doesn't conflict with HiddenWidget
// declared in File1.cs
public class HiddenWidget
{
    public void RunTask()
    {
        // omitted
    }
}

C# 언어 사양

자세한 내용은 C# 언어 사양선언된 접근성C# 11 - 파일 로컬 형식 기능 사양을 참조하세요.

참고 항목