Модификатор file
Ключевое слово file перед объявлением
класса, структуры, интерфейса, перечисления
или записи делает тип файл-локальным: его
имя действует только внутри этого .cs
файла. Так можно спрятать вспомогательные
типы рядом с публичным API, не расширяя
internal
область на всю сборку.
Синтаксис
file class Имя { }
file struct Имя { }
file interface Имя { }
Пример
Давайте создадим file класс и используем
его в Main того же файла:
using System;
file class LocalBox
{
public string Text = "abcde";
}
class Program
{
static void Main()
{
var box = new LocalBox();
Console.WriteLine(box.Text);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте спрячем реализацию за file типом,
а наружу отдадим обычный класс:
using System;
file class LocalCounter
{
public int Value;
}
class Facade
{
private LocalCounter inner = new LocalCounter();
public void Bump()
{
inner.Value++;
}
public void Print()
{
Console.WriteLine(inner.Value);
}
}
class Program
{
static void Main()
{
var facade = new Facade();
facade.Bump();
facade.Print();
}
}
Результат выполнения кода:
1
Пример
В другом файле той же сборки file тип
не виден - такой код не компилируется:
// FileA.cs
file class LocalBox { }
// FileB.cs той же сборки:
class Client
{
static void Main()
{
var box = new LocalBox();
}
}
Имя LocalBox существует только в
FileA.cs.