Siehe SO-Frage für eine detaillierte Antwort auf wie es funktioniert.
Meiner Erfahrung nach möchte ich interne Mitglieder in Erwartung einer zukünftigen Zeit, in der ich den Umfang der Klasse öffentlich machen möchte, öffentlich bekannt machen. Auf diese Weise kann ich das tun und alle zuvor markierten internen Methoden sind automatisch öffentlich.
Für mich lautet das: "Eine Methode, auf die jeder zugreifen kann, unabhängig von der Assembly, die in einer Klasse lebt, auf die nur über den Code in derselben Assembly zugegriffen werden kann."
Für mich bedeutet das: "Die Zugriffsdomäne von C ist auf diese Assembly beschränkt; die Zugriffsdomäne von M ist die uneingeschränkte Teilmenge der Zugriffsdomäne ihres Containers C ".
"öffentlich" bedeutet das für mich, weil das in der Spezifikation bedeutet, dass es bedeutet. Ich empfehle Ihnen, den Teil der Spezifikation zu lesen, der Bereiche für die Barrierefreiheit behandelt, wenn Sie Fragen oder Bedenken zu diesem Thema haben.
Zum Beispiel:
%Vor%Für mich lautet das " eine Methode, auf die jeder zugreifen kann, unabhängig von der Assembly, die in einer Klasse lebt, auf die nur über Code in derselben Assembly zugegriffen werden kann ".
Meine Erfahrung mit dem Compiler sagt mir, dass wenn ich so etwas mache und keine Warnung erhalte, es wahrscheinlich einen guten Grund dafür gibt.
Also, ich nehme an, entweder
(wenn 2, das ist kein Versuch, sich darüber zu beschweren - ich will nur verstehen)
Das %code% -Schlüsselwort beschränkt den Zugriff auf %code% auf nur Aufrufe, die innerhalb der Assembly vorgenommen wurden, in der sich %code% befindet.
%code% bedeutet nur, dass jeder auf das Mitglied zugreifen kann. %code% kennt oder kümmert sich nicht um Beschränkungen, die in der Klassenhierarchie höher platziert sind, und sollte es auch nicht.
Es ist "mit Absicht", mit anderen Worten. Wenn Sie %code% auf eine Methode setzen, geht der Compiler davon aus, dass Sie bereits wissen, dass Sie, wenn Sie der Klasse selbst weitere Einschränkungen auferlegen, wissen müssen, was Sie tun.
Der Gültigkeitsbereich der Klasse ist intern. Es scheint also keinen Sinn zu haben, öffentliche Eigenschaft zu haben, da nur die Klassen im Namensraum die Klasse sehen können, um die Eigenschaft zu sehen. Wenn du irgendwann beschlossen hast, die Klasse öffentlich zu machen, wäre es eine massive PIA, jedes Mitglied durchzugehen und seinen Umfang zu ändern.
Zum Beispiel:
%Vor%Für mich lautet das " eine Methode, auf die jeder zugreifen kann, unabhängig von der Assembly, die in einer Klasse lebt, auf die nur über Code in derselben Assembly zugegriffen werden kann ".
Meine Erfahrung mit dem Compiler sagt mir, dass wenn ich so etwas mache und keine Warnung erhalte, es wahrscheinlich einen guten Grund dafür gibt.
Also, ich nehme an, entweder
(wenn 2, das ist kein Versuch, sich darüber zu beschweren - ich will nur verstehen)
Siehe SO-Frage für eine detaillierte Antwort auf wie es funktioniert.
Meiner Erfahrung nach möchte ich interne Mitglieder in Erwartung einer zukünftigen Zeit, in der ich den Umfang der Klasse öffentlich machen möchte, öffentlich bekannt machen. Auf diese Weise kann ich das tun und alle zuvor markierten internen Methoden sind automatisch öffentlich.
Für mich lautet das: "Eine Methode, auf die jeder zugreifen kann, unabhängig von der Assembly, die in einer Klasse lebt, auf die nur über den Code in derselben Assembly zugegriffen werden kann."
Für mich bedeutet das: "Die Zugriffsdomäne von C ist auf diese Assembly beschränkt; die Zugriffsdomäne von M ist die uneingeschränkte Teilmenge der Zugriffsdomäne ihres Containers C ".
"öffentlich" bedeutet das für mich, weil das in der Spezifikation bedeutet, dass es bedeutet. Ich empfehle Ihnen, den Teil der Spezifikation zu lesen, der Bereiche für die Barrierefreiheit behandelt, wenn Sie Fragen oder Bedenken zu diesem Thema haben.
Das internal
-Schlüsselwort beschränkt den Zugriff auf M()
auf nur Aufrufe, die innerhalb der Assembly vorgenommen wurden, in der sich C
befindet.
public
bedeutet nur, dass jeder auf das Mitglied zugreifen kann. public
kennt oder kümmert sich nicht um Beschränkungen, die in der Klassenhierarchie höher platziert sind, und sollte es auch nicht.
Es ist "mit Absicht", mit anderen Worten. Wenn Sie public
auf eine Methode setzen, geht der Compiler davon aus, dass Sie bereits wissen, dass Sie, wenn Sie der Klasse selbst weitere Einschränkungen auferlegen, wissen müssen, was Sie tun.
Der Gültigkeitsbereich der Klasse ist intern. Es scheint also keinen Sinn zu haben, öffentliche Eigenschaft zu haben, da nur die Klassen im Namensraum die Klasse sehen können, um die Eigenschaft zu sehen. Wenn du irgendwann beschlossen hast, die Klasse öffentlich zu machen, wäre es eine massive PIA, jedes Mitglied durchzugehen und seinen Umfang zu ändern.