Domena dostępności (odwołanie w C#)
Domeny dostępności członka Określa, w sekcjach programów, których można się odwoływać członka.Jeśli członek jest zagnieżdżony w obrębie innego typu, jego domeny ułatwień dostępu jest określana przez oba poziom dostępności członka i domeny ułatwień dostępu, natychmiast zawierające typu.
Tekst programu project, która jest zadeklarowana jako w wynosi co najmniej domeny ułatwień dostępu typu najwyższego poziomu.Oznacza to, że domeny obejmuje wszystkie pliki źródłowe tego projektu.Tekst programu tego typu, w którym jest on zadeklarowany jako wynosi co najmniej domeny ułatwień dostępu typu zagnieżdżonego.Oznacza to, że domena jest jednostka typu obejmuje wszystkie rodzaje zagnieżdżone.Domeny ułatwień dostępu typu zagnieżdżonego nigdy nie przekracza wartość typu zawierające.Te pojęcia są wykazane w następującym przykładzie.
Przykład
W tym przykładzie zawiera typ najwyższego poziomu, T1oraz dwóch klas zagnieżdżonych, M1 i M2.Klasy zawierają pola, które mają różne accessibilities zadeklarowanej.W Main metodę, komentarz następuje każdej instrukcji, aby wskazać domeny dostępność każdego członka.Należy zauważyć, że instrukcje, które próbuje odwołać członków niedostępne są komentarzem.Jeśli chcesz zobaczyć błędy kompilatora, spowodowanych przez odwoływanie się do członka niedostępne, należy usunąć komentarze jedną naraz.
namespace AccessibilityDomainNamespace
{
public class T1
{
public static int publicInt;
internal static int internalInt;
private static int privateInt = 0;
static T1()
{
// T1 can access public or internal members
// in a public or private (or internal) nested class
M1.publicInt = 1;
M1.internalInt = 2;
M2.publicInt = 3;
M2.internalInt = 4;
// Cannot access the private member privateInt
// in either class:
// M1.privateInt = 2; //CS0122
}
public class M1
{
public static int publicInt;
internal static int internalInt;
private static int privateInt = 0;
}
private class M2
{
public static int publicInt = 0;
internal static int internalInt = 0;
private static int privateInt = 0;
}
}
class MainClass
{
static void Main()
{
// Access is unlimited:
T1.publicInt = 1;
// Accessible only in current assembly:
T1.internalInt = 2;
// Error CS0122: inaccessible outside T1:
// T1.privateInt = 3;
// Access is unlimited:
T1.M1.publicInt = 1;
// Accessible only in current assembly:
T1.M1.internalInt = 2;
// Error CS0122: inaccessible outside M1:
// T1.M1.privateInt = 3;
// Error CS0122: inaccessible outside T1:
// T1.M2.publicInt = 1;
// Error CS0122: inaccessible outside T1:
// T1.M2.internalInt = 2;
// Error CS0122: inaccessible outside M2:
// T1.M2.privateInt = 3;
// Keep the console open in debug mode.
System.Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
}
}
}
Specyfikacja języka C#
Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#. Specyfikacja języka jest ostatecznym źródłem informacji o składni i użyciu języka C#.
Zobacz też
Informacje
Modyfikatory dostępu (odwołanie w C#)
Poziomy ułatwień dostępu (odwołanie w C#)
Ograniczenia dotyczące używania poziomów ułatwień dostępu (odwołanie w C#)
Modyfikatory dostępu (Przewodnik programowania w języku C#)
Koncepcje
Przewodnik programowania w języku C#