Modificatori di accesso (specificatori) in C# con esempi di programmi

⚡ Riepilogo intelligente

In C#, i modificatori di accesso sono parole chiave che definiscono la visibilità di una classe, proprietà o metodo, limitando i programmi esterni che possono accedervi. I costruttori inizializzano automaticamente i valori dei campi ogni volta che viene creato un oggetto della classe.

  • 🔐 Privato: Il modificatore di accesso privato limita un membro alla stessa classe, bloccando l'accesso da qualsiasi programma esterno.
  • 🌐 Pubblico: Il modificatore di accesso pubblico espone una proprietà o un metodo a qualsiasi programma esterno senza restrizioni.
  • 🛡️ protetto: Il modificatore di accesso protetto condivide i membri solo con le classi ereditate dalla classe corrente.
  • 📦 Interno: Il modificatore di accesso interno consente l'accesso all'interno dello stesso assembly, ma non da un programma esterno.
  • ???? ️ Costruttore: Un costruttore condivide il nome della classe, non accetta alcun tipo di ritorno e inizializza i campi quando viene creato un oggetto.
  • 🤖 Assistenza AI: GitHub Copilot genera automaticamente modificatori e costruttori, mentre ML.NET mappa le proprietà delle classi alle caratteristiche del modello.

Modificatori di accesso (specificatori) in C#

Che cos'è il modificatore di accesso (specificatore) in C#?

Modificatori di accesso Gli specificatori di accesso in C# sono parole chiave utilizzate per definire la visibilità di una proprietà o di un metodo di una classe. Vengono utilizzati quando non si desidera che altri programmi possano visualizzare le proprietà o i metodi di una classe. I modificatori di accesso limitano l'accesso in modo che altri programmi non possano visualizzare le proprietà o i metodi di una classe.

Esistono 6 tipi di modificatori di accesso in C#:

  • Privata
  • Pubblico
  • Protetta
  • Interno
  • Interno protetto
  • Privato Protetto

Impareremo i principali modificatori di accesso in C# con esempi di programmi come spiegato di seguito.

Modificatori di accesso privato in C#

Quando il modificatore di accesso privato è collegato a una proprietà o a un metodo, significa che non è possibile accedere a tali membri da alcun programma esterno.

Esempio di modificatore di accesso privato

Facciamo un esempio e vediamo cosa succede quando utilizziamo il modificatore di accesso privato.

Modifichiamo il codice corrente nel nostro file Tutorial.cs. Nel metodo SetTutorial, cambiamo la parola chiave public in private.

Modificatori di accesso privato

Passiamo ora al nostro file Program.cs. Noterai che c'è una linea ondulata rossa sotto il metodo SetTutorial.

Poiché abbiamo dichiarato il metodo SetTutorial come privato nella nostra classe Tutorial, Visual Studio lo ha rilevato. Ha comunicato all'utente evidenziandolo che ora questo metodo non funzionerà dal file Program.cs.

Modificatore di accesso privato

Modificatori dell'accesso pubblico C#

Quando il modificatore di accesso pubblico è collegato a una proprietà o a un metodo, significa che è possibile accedere a tali membri da qualsiasi programma esterno. Lo abbiamo già visto nei nostri esempi precedenti.

Esempio di modificatore di accesso pubblico

Modificatori dell'accesso pubblico C#

Poiché abbiamo definito i nostri metodi come pubblici nella classe Tutorial, è possibile accedervi dal file Program.cs.

Modificatori di accesso protetto in C#

Quando il modificatore di accesso protetto è collegato a una proprietà o a un metodo, significa che è possibile accedere a tali membri solo da classi ereditate dalla corrente classe. Ciò verrà spiegato più dettagliatamente nella classe Ereditarietà.

Modificatori di accesso interno C#

Quando un modificatore di accesso interno è collegato a una proprietà o a un metodo, è possibile accedere a tali membri solo da un programma interno ma non da un programma esterno.

Costruttore C#

C# I costruttori vengono utilizzati per inizializzare i valori dei campi della classe quando vengono creati gli oggetti corrispondenti. Un costruttore è un metodo che ha lo stesso nome di quello della classe. Se un costruttore è definito in una classe, fornirà il primo metodo che viene chiamato quando viene creato un oggetto. Supponiamo di avere una classe chiamata Employee. Anche il metodo di costruzione verrebbe denominato Employee().

Le seguenti cose fondamentali devono essere notate sui metodi del costruttore

  1. Il modificatore di accesso predefinito C# per il costruttore deve essere reso pubblico.
  2. Non dovrebbe esserci alcun tipo restituito per il metodo del costruttore.

Esempio di costruttore C#

Vediamo ora come possiamo incorporare l'utente dei costruttori nel nostro codice. Utilizzeremo i costruttori per inizializzare i campi TutorialID e TutorialName su alcuni valori predefiniti quando viene creato l'oggetto.

Passo 1) Il primo passo è creare il costruttore per la nostra classe Tutorial. In questo passaggio, aggiungiamo il codice seguente al file Tutorial.cs.

Costruttore C#

Code Spiegazione:-

  1. Per prima cosa aggiungiamo un nuovo metodo che ha lo stesso nome di quello della classe. Poiché ha lo stesso nome della classe, C# lo considera un metodo di costruzione. Quindi ora ogni volta che il metodo chiamante crea un oggetto di questa classe, questo metodo verrà chiamato per impostazione predefinita.
  2. Nel costruttore del Tutorial, impostiamo il valore di TutorialID su 0 e TutorialName su "Default". Pertanto, ogni volta che viene creato un oggetto, questi campi avranno sempre questi valori predefiniti.

Passiamo ora al file Program.cs e rimuoviamo semplicemente la riga che chiama il metodo SetTutorial. Questo perché vogliamo solo vedere come funziona il costruttore.

Costruttore C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Tutorial
 {
  public int TutorialID; 
  public string TutorialName;
  
  public Tutorial()
  {
   TutorialID=0;
   TutorialName="Default";
  }
  public void SetTutorial(int pID,string pName) 
  {
   TutorialID=pID;
   TutorialName=pName;
  }
  public String GetTutorial()
  {
   return TutorialName;
  }
  
  static void Main(string[] args) 
  {
   Tutorial pTutor=new Tutorial();
    
   Console.WriteLine(pTutor.GetTutorial());
    
   Console.ReadKey(); 
  }
 }
}

Code Spiegazione:-

  1. Il primo passo è creare un oggetto per la classe Tutorial. Questo viene fatto tramite la parola chiave "nuovo".
  2. Usiamo il metodo GetTutorial della classe Tutorial per ottenere TutorialName. Questo viene quindi visualizzato sulla console tramite il metodo Console.WriteLine.

Se il codice sopra riportato viene inserito correttamente e il programma viene eseguito, verrà visualizzato il seguente output.

Produzione:

Costruttore C#

Dall'output possiamo vedere che il costruttore è stato effettivamente chiamato e che il valore di TutorialName è stato impostato su "Default".

Nota: Qui il valore "default" viene recuperato dal costruttore.

DOMANDE FREQUENTI

Se non viene specificato alcun modificatore, i membri di classi e struct sono impostati di default su private e i tipi di livello superiore su internal, rimanendo nascosti finché non se ne estende la visibilità.

L'attributo `Protected` espone un membro alla stessa classe e a qualsiasi classe derivata, anche tra assembly diversi. L'attributo `Internal` lo espone solo ai tipi presenti nello stesso assembly.

L'attributo protected internal consente l'accesso dallo stesso assembly o da qualsiasi classe derivata. L'attributo private protected è più restrittivo e consente l'accesso solo alle classi derivate all'interno dello stesso assembly.

C# supporta costruttori predefiniti, parametrizzati, di copia, statici e privati. Essi inizializzano i campi di un oggetto, eseguono la configurazione della classe una sola volta o clonano i valori di un altro oggetto.

Un costruttore statico non accetta modificatori né parametri. Viene eseguito una sola volta, prima della creazione del primo oggetto o del caricamento dei membri statici, inizializzando i campi statici.

Sì. Una classe può definire diversi costruttori con elenchi di parametri differenti. Il compilatore sceglie quello che corrisponde agli argomenti passati a `new`.

Sì. GitHub Copilot suggerisce modificatori, costruttori e inizializzatori di campo da un nome di classe o da un commento all'interno di Visual Studio e VS Code. RevVisualizza ciascun livello di visibilità suggerito.

ML.NET mappa le proprietà pubbliche di una classe dati C# alle caratteristiche e alle etichette del modello. I metodi getter e setter pubblici consentono di leggere tali valori durante l'addestramento.

Riassumi questo post con: