Risposte:
internal è per scope assembly (cioè accessibile solo dal codice nello stesso .exe o .dll)
private è per ambito di classe (cioè accessibile solo da codice nella stessa classe).
Trova una spiegazione di seguito. Puoi controllare questo link per maggiori dettagli - http://www.dotnetbull.com/2013/10/public-protected-private-internal-access-modifier-in-c.html
Privato: - I membri privati sono accessibili solo all'interno del proprio tipo (Classe propria).
Interno: - I membri interni sono accessibili solo all'interno dell'assembly per eredità (il suo tipo derivato) o per istanza di classe.
Riferimento:
Protected Internal
offre un accesso più ampio rispetto a Protected
.
protected internal
come protected OR internal
.
With Type
significa?
AND
quella matrice su true | false | false | false protected internal
. non intuitivo. invece è vero | vero | vero | falso come se OR'd
.
private protected
non sono molto intuitive. Per dettagli: docs.microsoft.com/en-us/dotnet/csharp/language-reference/…
internal
i membri sono visibili a tutto il codice nell'assembly in cui sono dichiarati.
(E agli altri assembly a cui si fa riferimento usando l' [InternalsVisibleTo]
attributo )
private
i membri sono visibili solo alla classe dichiarante. (comprese le classi nidificate)
Una classe esterna (non nidificata) non può essere dichiarata private
, in quanto non esiste un ambito di contenimento a cui renderla privata.
Per rispondere alla domanda che hai dimenticato di porre, i protected
membri sono come private
membri, ma sono anche visibili in tutte le classi che ereditano il tipo dichiarante. (Ma solo su un'espressione almeno del tipo della classe corrente)
privato - incapsulamenti in classe / ambito / struttura ect ".
interno - incapsulamento negli assiemi.
I membri privati sono accessibili solo all'interno del corpo della classe o della struttura in cui sono dichiarati.
I tipi o membri interni sono accessibili solo all'interno dei file nello stesso assembly
Internal ti consentirà di fare riferimento, per esempio, a una classe statica di accesso ai dati (per la sicurezza dei thread) tra più classi di logica aziendale, senza sottoscriverle per ereditare quella classe / inciampare l'una sull'altra nei pool di connessioni e, in definitiva, evitare di consentire una classe DAL promuovere l'accesso a livello pubblico. Questo ha innumerevoli basi nel design e nelle migliori pratiche.
Entity Framework fa buon uso di questo tipo di accesso
i membri interni sono accessibili all'interno dell'assemblea (accessibile solo nello stesso progetto)
i membri privati sono accessibili all'interno della stessa classe
Ci sono 2 progetti in una soluzione (Progetto1, Progetto2) e Progetto1 ha un riferimento a Progetto2.