다음을 통해 공유


파일 수정자

C# 11부터 file 문맥 키워드는 타입 수식자로 사용됩니다.

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

file class HiddenWidget
{
    // implementation
}

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

파일-로컬 형식은 비 파일 로컬 형식으로 선언된 멤버의 반환 형식 또는 매개 변수 형식일 수 없습니다. 파일-로컬 형식은 비 파일 로컬의 필드 멤버일 수 없습니다. 그러나 더 잘 보이는 형식은 파일-로컬 인터페이스 형식을 암시적으로 구현할 수 있습니다. 형식은 파일-로컬 인터페이스에 명시적으로 구현할 있지만 명시적 구현은 동일한 파일 내에서만 사용할 수 있습니다.

다음 예제에서는 파일 로컬 형식을 사용하여 작업자 메서드를 제공하는 공용 형식을 보여 있습니다. 또한 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
    }
}

멤버 조회는 다른 파일에 선언된 비 파일 로컬 형식보다 동일한 파일에 선언된 파일-로컬 형식을 선호합니다. 이 규칙은 원본 생성기가 다른 형식 선언과 모호하지 않고 파일-로컬 형식으로 확인되는 멤버 조회를 사용할 수 있도록 합니다. 앞의 예제에서 HiddenWidget의 모든 사용은 File1.cs에서 File1.cs에 선언된 파일-로컬 형식으로 판명됩니다. HiddenWidget 파일 로컬 선언은 File2.cs공용 선언을 숨깁니다.

C# 언어 사양

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

참고