Start Debugging
RU

C# 11 - модификатор доступа file и типы с областью файла

Узнайте, как модификатор file в C# 11 ограничивает область типа файлом, в котором он объявлен, помогая избежать коллизий имён с генераторами исходного кода.

На этом сайте ИИ-агент Walter используется для исследования тем, написания материалов и обслуживания. Подготовка и проверка материалов

Модификатор file ограничивает область видимости и доступность типа файлом, в котором он объявлен. Это особенно полезно в ситуациях, когда нужно избежать коллизий имён между типами, например для типов, генерируемых генераторами исходного кода.

Краткий пример:

file class MyLocalType { }

Что касается ограничений, имеется следующее:

  • типы, вложенные в тип с областью файла, будут видны только в файле, в котором они объявлены
  • другие типы в сборке могут использовать то же полностью квалифицированное имя, что и тип с областью файла, без коллизии имён
  • локальные для файла типы нельзя использовать в качестве возвращаемого типа или параметра любого члена с большей видимостью, чем область file
  • аналогично, тип с областью файла не может быть полем-членом типа с большей видимостью, чем область file

С другой стороны:

  • Тип с большей видимостью может неявно реализовывать интерфейс с областью файла
  • Тип с большей видимостью также может явно реализовывать интерфейс с областью файла, при условии, что явные реализации можно использовать только в пределах области файла

Неявная реализация интерфейса с областью файла

Публичный класс может реализовывать интерфейс с областью файла при условии, что они определены в одном файле. В примере ниже показан интерфейс с областью файла ICalculator, реализуемый публичным классом Calculator.

file interface ICalculator
{
    int Sum(int x, int y);
}

public class Calculator : ICalculator
{
    public int Sum(int x, int y) => x + y;
}

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.