Concetto di class privata in C #

Le classi private possono esistere in C #, oltre che nelle classi Inner?

Semplicemente NO. Niente a meno che non sia in una class annidata

  • Le classi e le strutture che non sono nidificate all’interno di altre classi o strutture possono essere pubbliche o interne . Un tipo dichiarato pubblico è accessibile da qualsiasi altro tipo. Un tipo dichiarato come interno è accessibile solo da tipi all’interno dello stesso assembly. Classi e strutture sono dichiarate come interne per impostazione predefinita a meno che la parola chiave public non venga aggiunta alla definizione della class.

  • Le definizioni di class o struct possono aggiungere la parola chiave interna per rendere esplicito il loro livello di accesso. I modificatori di accesso non influenzano la class o la struttura stessa – ha sempre accesso a se stesso ea tutti i suoi membri.

  • I membri di Struct, comprese le classi e le strutture nidificate, possono essere dichiarati come pubblici, interni o privati. I membri della class, comprese le classi e le strutture nidificate, possono essere pubblici, protetti interni, protetti, interni o privati. Il livello di accesso per i membri della class e per i membri della struttura, incluse le classi e le strutture nidificate, è privato per impostazione predefinita. I tipi nidificati privati ​​non sono accessibili dall’esterno del tipo di contenuto.

  • Le classi derivate non possono avere una maggiore accessibilità rispetto ai loro tipi di base. In altre parole, non è ansible avere una class pubblica B che deriva da una class interna A. Se ciò fosse consentito, avrebbe l’effetto di rendere pubblico A, poiché tutti i membri protetti o interni di A sono accessibili dalla class derivata.


    È ansible abilitare specifici altri assembly per accedere ai tipi interni utilizzando InternalsVisibleToAttribute .

No, non c’è. Non puoi avere una class privata a meno che non sia annidata.

In quale scenario diverso da quello per una class più interessante ti piacerebbe avere una lezione ‘privata’?

È ansible utilizzare il modificatore internal per creare una class che è visibile solo nell’assieme corrente.

 // the class below is only visible inside the assembly in where it was declared internal class MyClass { } 

No. Quale sarebbe lo scopo di una tale class?

Possiamo dichiarare una class come Privata all’interno di un’altra class. gentilmente trovare il codice qui sotto su come ottenere lo stesso:

  public class Class1 { temp _temp ; public Class1() { _temp = new temp(); } public void SetTempClass(string p_str, int p_Int) { _temp.setVar(p_str, p_Int); } public string GetTempClassStr() { return _temp.GetStr(); } public int GetTempClassInt() { return _temp.GetInt(); } private class temp { string str; int i; public void setVar(string p_str, int p_int) { str = p_str; i = p_int; } public string GetStr() { return str; } public int GetInt() { return i; } } } 

Ho trovato le informazioni al modificatore di accesso predefinito C # del metodo Main () per essere utile anche in relazione a questa domanda che ha programmato in altre lingue. Dall’esempio qui sotto, MyClass sarebbe interno e il vuoto statico principale sarebbe privato. Come Peter Talyor ha accennato ad altre lingue, credo che valga la pena di esporre esplicitamente. Visual Studio in base al progetto, crea un file cs del programma iniziale simile al seguente; la vista della class nella scheda Visualizza in Visual Studio, come menzionato nell’articolo del stream dello stack collegato, può essere utile per verificare i modificatori di accesso.

 namespace MyNamespace{ class MyClass{ static void Main(string[] args){ } } }