2012-09-30 6 views
12

Il riferimento al linguaggio C# su MSDN definisce "interno protetto" come "L'accesso è limitato all'assembly corrente o ai tipi derivati ​​dalla classe contenente". Ma da un punto di vista semantico, "interno protetto" mi sembra "protetto e interno", il che significa che il membro sarà accessibile solo a quelle classi derivate con lo stesso assembly. Esiste un modificatore di accesso che abbia un significato per lo stesso effetto?interno protetto

+0

questo sempre mi infastidiva troppo .. domanda simile: http://stackoverflow.com/questions/7000871/internal-protected -property-ancora-accessibile-da-un-diverso-assemblea – nawfal

risposta

17

C# non ha alcun modificatore di accesso.

Tuttavia, il CLR supporta, come il livello di accesso FamANDAssem (protected internal è FamORAssem)

+4

è supportato in C#. È privato protetto che è disponibile solo in C++. protetto interno è FamORAssem. privato protetto è FamANDAssem. – BlackWasp

+0

BlackWasp è corretto. C# supporta l'interno protetto. Vedi http://msdn.microsoft.com/en-us/library/ms173121(v=vs.110).aspx. – akton

+4

@BlackWasp: questo è quello che ho detto. – SLaks

1

No, non esiste un tale modificatore. Internal dovrebbe essere sufficiente, in quanto dovresti essere in grado di sapere da altri tipi nello stesso assembly cosa è legale chiamare e cosa no.

+0

Grazie! ma quello che sto cercando di ottenere è che non è possibile definire un membro in modo tale che sia accessibile solo alle classi derivate E all'interno dello stesso assembly. Anche se ora non riesco a pensare a uno scenario in cui avere un tale modificatore di accessi potrebbe rivelarsi utile, è bene sapere che non esiste un tale modificatore che consentirebbe al programmatore di dire che questo membro è "protetto e interno" – adfs

+2

@adfs: essere in grado di dichiarare un metodo come 'internal' * e *' protected' sarebbe meglio di 'internal' solo nello scenario in cui il metodo dovrebbe prendere un parametro di un tipo di classe nidificata' protected', specialmente se protetto la classe aveva membri di tipi interni. L'interno protetto – supercat