Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Modyfikator file ogranicza widoczność typu najwyższego poziomu do pliku zawierającego jego deklarację. Generatory źródeł najczęściej stosują file modyfikator do generowanych typów. Typy plików lokalnych zapewniają generatory źródeł w wygodny sposób, aby uniknąć kolizji nazw między generowanymi typami.
Dokumentacja języka C# zawiera ostatnio wydaną wersję języka C#. Zawiera również początkową dokumentację dla funkcjonalności w publicznych wersjach testowych nadchodzącego wydania języka.
Dokumentacja identyfikuje dowolną funkcję po raz pierwszy wprowadzoną w ostatnich trzech wersjach języka lub w bieżącej publicznej wersji zapoznawczej.
Wskazówka
Aby dowiedzieć się, kiedy funkcja została po raz pierwszy wprowadzona w języku C#, zapoznaj się z artykułem dotyczącym historii wersji języka C#.
Modyfikator file deklaruje typ pliku lokalnego, jak w tym przykładzie:
file class HiddenWidget
{
// implementation
}
Wszystkie typy zagnieżdżone w typie lokalnym pliku są również widoczne tylko w pliku zawierającym jego deklarację. Inne typy w zestawie mogą używać tej samej nazwy co typ pliku lokalnego. Ponieważ typ pliku lokalnego jest widoczny tylko w pliku zawierającym jego deklarację, te typy nie tworzą kolizji nazewnictwa.
Typ pliku lokalnego nie może być typem zwracanym ani typem parametru dowolnego elementu członkowskiego zadeklarowanego w typie innym niż file-local. Typ pliku lokalnego nie może być elementem członkowskim pola typu innego niż plik lokalny. Jednak bardziej widoczny typ może niejawnie implementować typ interfejsu lokalnego pliku. Typ może również jawnie zaimplementować lokalny dla pliku interfejs, ale jawne implementacje mogą być używane tylko w tym samym pliku.
W poniższym przykładzie przedstawiono typ publiczny, który używa lokalnego typu pliku do zapewnienia metody roboczej. Ponadto typ publiczny implementuje niejawnie interfejs lokalny pliku:
// 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();
}
}
W innym pliku źródłowym można zadeklarować typy o takich samych nazwach jak typy lokalne plików. Typy plików lokalnych nie są widoczne:
// In File2.cs:
// Doesn't conflict with HiddenWidget
// declared in File1.cs
public class HiddenWidget
{
public void RunTask()
{
// omitted
}
}
Wyszukiwanie elementów preferuje typ lokalny pliku zadeklarowany w tym samym pliku nad typ nielokalny zadeklarowany w innym pliku. Ta reguła gwarantuje, że generator kodu źródłowego może polegać na operacji wyszukiwania członków rozwiązywanej do typu lokalnego pliku bez niejednoznaczności z innymi deklaracjami typów. W poprzednim przykładzie wszystkie zastosowania HiddenWidget w File1.cs odnoszą się do typu lokalnego pliku zadeklarowanego w File1.cs. Deklaracja plikowo-lokalna HiddenWidget ukrywa deklarację publiczną w File2.cs.
Specyfikacja języka C#
Aby uzyskać więcej informacji, zobacz Zadeklarowane ułatwienia dostępu w specyfikacji języka C# i Specyfikacja funkcji Typów lokalnych plików .
Zobacz też
- C# słowa kluczowe
- modyfikatory dostępu
- poziomy ułatwień dostępu
- modyfikatory
- publiczne
- chronione
- wewnętrzne