共用方式為


檔案修改器

從 C# 11 開始,file 內容關鍵詞是類型修飾詞。

file 修飾詞會將最上層類型的可見度限制為宣告檔案。 file 修飾詞最常套用至來源產生器所撰寫的類型。 文件內類型為來源產生器提供了一種方便的方法,以避免生成類型之間的名稱衝突。 file 修飾詞會宣告檔案範圍類型,如下列範例所示:

file class HiddenWidget
{
    // implementation
}

在檔案本機類型內巢狀的任何類型,也只會在宣告它所在的檔案內顯示。 元件中的其他類型可以使用與本機檔案類型相同的名稱。 因為檔案本機類型只有在其宣告的檔案中可見,所以這些類型不會導致命名衝突。

本地檔案類型不能作為任何在非本地檔案類型中宣告成員的返回類型或參數類型。 文件範圍內的類型不能是非文件範圍內的字段成員。 更顯而易見的類型可以隱式實作文件區域介面類型。 型別也可以 明確實作 檔案本機介面,但明確實作只能在相同的檔案內使用。

以下範例顯示一個使用檔案本地類型來提供工作方法的公用類型。 此外,公共類型會隱含地實作檔案區域介面:

// 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
    }
}

成員查找時更傾向於選擇在相同檔案中宣告的本地類型,而非在不同檔案中宣告的非本地類型。 此規則可確保來源產生器可以依賴成員查找解析為檔案區域類型,而不會與其他類型宣告產生歧義。 在上述範例中,File1.cs 中的所有 HiddenWidget 用法都會被解析為在 File1.cs中所宣告的檔案本地類型。 HiddenWidget 的 file-local 宣告會在 File2.cs中隱藏公用宣告。

C# 語言規格

如需詳細資訊,請參閱 C# 語言規格中的 宣告的可及性,以及 C# 11 - 檔案本地類型 功能規格。

另請參閱