2013-02-17 8 views
6
public class TestClass 
{ 
    protected internal int FieldA; 
    internal protected int FieldB;  
} 

Gibt es einen Unterschied zwischen Protected Internal und Internal Procted Members?Gibt es einen Unterschied zwischen geschützt intern und intern geschützt?

+5

Nein gibt es nicht. Fallen Sie jedoch nicht in die Falle, wenn Sie nicht erkennen, dass es "geschützt" bedeutet intern ". Es bedeutet nicht "geschützt && intern". –

Antwort

7

Gibt es einen Unterschied zwischen Protected Internal und Internal Procted Mitglieder?

Es gibt keinen Unterschied zwischen ihnen.

protected internal bedeutet protected ODER internal.

internal protected bedeutet internal ODER protected.

Der Typ oder Element kann in von jedem Code in der Baugruppe zugegriffen werden der sie deklariert ist, oder von innerhalb einer abgeleiteten Klasse in einer anderen Montage. Der Zugriff von einer anderen Assembly muss innerhalb einer Klasse Deklaration stattfinden, die von der Klasse abgeleitet ist, in der das geschützte interne Element deklariert ist, und muss über eine Instanz des abgeleiteten Klassentyps erfolgen.

protected internal commanly verwendet. Es gibt keine Erklärung über internal protected in MSDN Seite.

Überprüfen Sie auch heraus Phil Haack kühlen Blog-Post What Does Protected Internal Mean?

+0

'intern' ODER' intern'? –

+0

@SimonWithehead Korrigiert, danke. –

2

Nein, kein Unterschied. Sie können sie in beliebiger Reihenfolge deklarieren. Genau wie Sie static vor oder nach dem Zugriffsmodifikator deklarieren können.

Der einzige wirkliche Unterschied sollte sein, was Sie und Ihr Team entscheiden. In der Regel möchten Sie einen Stil beibehalten, um Verwirrung oder Annahmen zu vermeiden, oder zumindest Dinge konsistent zu machen, wenn Sie es lesen.

EDIT: Obwohl, jetzt, wo ich daran denke, kann ich mich nicht erinnern "internal protected" oft zu sehen. Auf der MSDN page for access modifiers, listet es es als "protected internal", so bleiben Sie vielleicht, wie es als "mehr Standard" betrachtet werden kann.

1

Nein, gibt es nicht.

Beide Varianten definieren ein Mitglied, auf das von der gleichen Assembly UND von den Nachkommenklassen zugegriffen werden kann.

+0

meinst du "ODER"? –

+0

In diesem speziellen Fall haben sowohl "und" als auch "oder" die gleiche Bedeutung. –

1

es ist eine bitweise Operation mit einer logischen "OR" => intern: aus der gleichen Baugruppe. protected: von einer abgeleiteten Klasse. "Geschützt UND intern" ist sinnlos :-)