C# 11 - модификатор доступа file и типы с областью файла
Узнайте, как модификатор file в C# 11 ограничивает область типа файлом, в котором он объявлен, помогая избежать коллизий имён с генераторами исходного кода.
Модификатор 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.