Es macht technisch keinen Unterschied, wenn Sie den Konstruktor public
anstelle von protected
für eine abstrakte Klasse erstellen. Die Erreichbarkeit/Sichtbarkeit des Konstruktors ist immer noch genau dieselbe: die gleiche Klasse oder die abgeleiteten Klassen. Die zwei Schlüsselwörter haben für alle Absichten und Zwecke nicht unterscheidbare Effekte.
Also, diese Wahl ist nur eine Frage des Stils: Geben Sie protected
, um die Object Oriented versierte Menschen zu befriedigen.
Reflection wird standardmäßig enthalten nur den Konstruktor, wenn es public
ist, aber Sie können diesen Konstruktor sowieso nicht nennen.
IntelliSense zeigt den public
-Konstruktor bei der Eingabe von new
, aber Sie können diesen Konstruktor trotzdem nicht aufrufen.
Die Metadaten der Assembly spiegeln die Tatsache wider, dass der Konstruktor öffentlich oder geschützt ist.
Mit anderen Worten: Warum möchten Sie die IntelliSense anderer Menschen mit nutzlosem Müll verschmutzen? –
@Andre-Konstruktoren werden nur in IntelliSense für neue und Basisaufrufe angezeigt. In der Regel werden abstrakte Klassen aus neuen Filtern herausgefiltert, bevor die Barrierefreiheit berücksichtigt wird, da die Überprüfung auf Abstrakt sehr einfach und kostengünstig ist. – JaredPar
Also, sollte dies nicht der Compiler erzwingen, dass abstrakte Klassen ** ** öffentliche Konstruktoren nicht haben können? – Yuck