___ answer10390600 ___

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.

    
___ answer10391079 ___
  

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.

    
Was ist die Bedeutung eines öffentlichen Mitglieds einer internen Klasse? ___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert. ___ qstntxt ___

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

  1. In meinem Verständnis von Schutzniveaus fehlt etwas.
  2. Es könnte eine Warnung geben, aber es gibt keine.

(wenn 2, das ist kein Versuch, sich darüber zu beschweren - ich will nur verstehen)

    
___ answer10390590 ___

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.

    
___ answer10390624 ___

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.

    
___ tag123internal ___ Die interne Variable sollte verwendet werden, wenn die Frage, in der diese Variable verwendet wurde, die interne Operation in einer Funktion, Sprache, einem Programm oder System betrifft. ___ tag123class ___ Eine Vorlage zum Erstellen neuer Objekte, die die allgemeinen Zustände und Verhaltensweisen beschreibt. NICHT MIT CSS-KLASSEN VERWECHSELN. Verwenden Sie stattdessen [css]. ___

7

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

  1. In meinem Verständnis von Schutzniveaus fehlt etwas.
  2. Es könnte eine Warnung geben, aber es gibt keine.

(wenn 2, das ist kein Versuch, sich darüber zu beschweren - ich will nur verstehen)

    
Aaron Anodide 30.04.2012, 21:05
quelle

4 Antworten

5

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.

    
Steve Danner 30.04.2012, 21:08
quelle
10
  

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.

    
Was ist die Bedeutung eines öffentlichen Mitglieds einer internen Klasse?
Eric Lippert 30.04.2012 21:52
quelle
5

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.

    
Robert Harvey 30.04.2012 21:07
quelle
2

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.

    
Tony Hopkinson 30.04.2012 21:10
quelle

Tags und Links