次の方法で共有


file (C# リファレンス)

C# 11 以降、file コンテキスト キーワードは型修飾子です。

file 修飾子は、最上位レベルの型のスコープと可視性を、それが宣言されているファイルに制限します。 file 修飾子は、ソース ジェネレーターによって書き込まれた型に通常適用されます。 file ローカル型は、生成された型間の名前の競合を回避する便利な方法をソース ジェネレーターに提供しています。 file 修飾子では、次の例のように、file ローカル型を宣言します。

file class HiddenWidget
{
    // implementation
}

file ローカル型内に入れ子になっている型も、その型が宣言されているファイル内でのみ可視できます。 アセンブリ内の他の型は、file ローカル型と同じ名前を使用できます。 file ローカル型は、それが宣言されているファイルでのみ可視されるため、これらの型では名前の競合は発生しません。

file ローカル型は、file スコープより可視性が高いメンバーの戻り値の型またはパラメーター型にすることはできません。 file ローカル型は、file スコープより可視性の高い型のフィールド メンバーにすることはできません。 ただし、より可視性の高い型で、file ローカル インターフェイス型を暗黙的に実装することができます。 型はファイルローカル インターフェイスを明示的に実装 することもできますが、明示的な実装は file スコープ内でのみ使用できます。

次の例は、file ローカル型を使用して worker メソッドを提供する public 型を示しています。 さらに、この public 型では、file ローカル インターフェイスを暗黙的に実装しています。

// 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();
    }
}

別のソース ファイルでは、file ローカル型と同じ名前の型を宣言できます。 file ローカル型は可視できません。

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

C# 言語仕様

詳細については、C# 言語の仕様に関するページの「アクセシビリティの宣言」および C# 11 - file ローカル型の機能仕様に関するページを参照してください。

関連項目