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

C'è differenza tra membri interni protetti e membri interni protetti?Esiste una differenza tra Protetto interno e Interno protetto?

+5

No, non c'è. Tuttavia, non cadere nella trappola di non rendersene conto significa 'protetto || internal'. Non significa 'protected && internal'. –

risposta

7

C'è differenza tra membri protetti interni e interni protetti ?

Non c'è differenza tra di loro.

protected internal significa protected O internal.

internal protected significa internal O protected.

Il tipo o membro può accedere da qualsiasi codice nell'assemblea cui è dichiarata, o dall'interno di una classe derivata in un'altra assemblaggio. L'accesso da un altro assembly deve avvenire all'interno di una dichiarazione della classe che deriva dalla classe in cui è dichiarato l'elemento interno protetto e deve avvenire tramite un'istanza del tipo di classe derivata.

protected internal comunemente utilizzato. Non c'è alcuna spiegazione su internal protected nella pagina MSDN.

controllare anche Phil Haack fresco post sul blog What Does Protected Internal Mean?

+0

'internal' OR' internal'? –

+0

@SimonWhitehead Fisso, grazie. –

2

No, nessuna differenza. Puoi dichiararli nell'ordine che preferisci. Proprio come è possibile dichiarare static prima o dopo il modificatore di accesso.

L'unica vera differenza dovrebbe essere ciò che voi e il vostro team decidete. In genere ti consigliamo di attenersi allo stile uno per evitare confusione o ipotesi, o almeno rendere le cose coerenti durante la lettura.

EDIT: Anche se, ora che ci penso, non ricordo di aver visto spesso "internal protected". Sul numero MSDN page for access modifiers, lo elenca come "protected internal", quindi è probabile che rimanga tale perché potrebbe essere considerato "più standard".

1

No, non c'è.

Entrambe le varianti definiscono un membro accessibile dallo stesso assembly AND dalle classi discendenti.

+0

intendi "O"? –

+0

In questo caso particolare, sia "and" che "or" avranno lo stesso significato. –

1

è un'operazione bit per bit con una logica "OR" => interno: dalla stessa assemblea. protetto: da una classe derivata. "protetto E interno" non ha senso :-)