Heim  >  Artikel  >  Backend-Entwicklung  >  C#-Schwierigkeiten werden einzeln aufgeschlüsselt (5): Klassenzugriffstypen

C#-Schwierigkeiten werden einzeln aufgeschlüsselt (5): Klassenzugriffstypen

黄舟
黄舟Original
2016-12-22 14:11:301171Durchsuche

Wenn man über die Unterschiede zwischen diesen vier Kategorien spricht, muss man ein Konzept erklären: die Montage. Assembly (Assembly) kann einfach als eine nach der Kompilierung generierte DLL- oder EXE-Datei verstanden werden. Im Vergleich zum Namespace ist sie die physische Organisationsform der Programmklassenbibliothek beschreibt „Assembly“. Enthält Metadaten, die ihre eigenen Build-Nummern und Details aller darin enthaltenen Daten und Objekttypen beschreiben. Im Allgemeinen kann eine Assembly einen oder mehrere Namespaces enthalten.

Öffentlich: Sichtbar für jede Methode einer anderen Klasse;
Privat: Auf die in dieser Klasse definierten Mitglieder kann nur von Methoden dieser Klasse zugegriffen werden.
Geschützt: Auf Mitglieder dieser Klasse kann nur zugegriffen werden Auf Methoden dieser Klasse und Methoden von Klassen, die diese Klasse erben, kann nur zugegriffen werden:
intern: Auf Mitglieder dieser Klasse kann nur über Methoden jeder Klasse in der Assembly zugegriffen werden, in der sich diese Klasse befindet.
geschützt intern : geschützt und intern Die Vereinigung von .
Die Zugriffsebene von hoch nach niedrig sollte also Public>protected internal>internal>Protected>Private sein.

Der Standardmodifikator der Klasse ist intern, der Standardmodifikator der Mitgliedsvariablen in der Klasse ist privat , und der Namespace kann den Modifikator public berücksichtigen. Ein weiterer auf msdn erwähnter Punkt ist, dass die Zugriffsebene der erbenden Klasse nicht höher sein darf als die Zugriffsebene der geerbten Klasse. Beispielsweise kann eine interne Klasse keine private Klasse erben.

using System; 

/****************************** 
* Chapter:C#难点逐个击破(五) 
* Author:王洪剑 
* Date:2010-1-15 
* Blog:http://www.51obj.cn/ 
* Email:walkingp@126.com 
* Description:访问修改符 
* ***************************/ 
namespace TestMain 
{ 
public class A 
{ 
public void Alert() 
{ 
} 
} 

internal class B:A 
{ 
internal new void Alert() 
{ 
Console.WriteLine("you"); 
} 
} 

class Program 
{ 
static void Main() 
{ 
B b=new B(); 
b.Alert(); 

} 
} 
}

Das Obige ist der Inhalt der C#-Schwierigkeiten nacheinander (5): Klassenzugriffstyp Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn