Come usare const, readonly e static in C #

Le parole chiave const, readonly e static vengono utilizzate spesso durante la programmazione in C #. Tuttavia, sebbene queste parole chiave abbiano differenze importanti, hanno anche somiglianze che a volte rendono difficile sapere quando utilizzarle. Questo articolo discute le parole chiave const, static e readonly in C #, come vengono confrontate e come dovremmo usarle nelle nostre applicazioni C #.

Per lavorare con gli esempi di codice forniti in questo articolo, dovresti avere Visual Studio 2019 installato nel tuo sistema. Se non hai già una copia, puoi scaricare Visual Studio 2019 qui. 

Creare un progetto di applicazione console in Visual Studio 2019

Prima di tutto, creiamo un progetto di applicazione console .NET Core in Visual Studio. Supponendo che Visual Studio 2019 sia installato nel sistema, seguire i passaggi descritti di seguito per creare un nuovo progetto di applicazione console .NET Core in Visual Studio.

  1. Avvia l'IDE di Visual Studio.
  2. Fai clic su "Crea nuovo progetto".
  3. Nella finestra "Crea nuovo progetto", seleziona "App Console (.NET Core)" dall'elenco dei modelli visualizzati.
  4. Fare clic su Avanti.
  5. Nella finestra "Configura il tuo nuovo progetto" mostrata di seguito, specifica il nome e la posizione per il nuovo progetto.
  6. Fare clic su Crea.

Questo creerà un nuovo progetto di applicazione console .NET Core in Visual Studio 2019. Useremo questo progetto per illustrare l'uso delle parole chiave const, readonly e static in C # nelle sezioni successive di questo articolo.

Usa la parola chiave const in C #

La parola chiave const (read: constant) in C # viene utilizzata per definire una variabile costante, ovvero una variabile il cui valore non cambierà durante la durata del programma. Quindi è imperativo assegnare un valore a una variabile costante al momento della sua dichiarazione.

Questo valore di una variabile costante è noto anche come valore "in fase di compilazione". Le variabili dichiarate utilizzando la parola chiave const sono note anche come costanti in fase di compilazione. Va notato che una variabile costante è immutabile, ovvero il valore assegnato a una variabile costante non può essere modificato in seguito.

Il frammento di codice seguente illustra come definire una costante in fase di compilazione utilizzando la parola chiave const in C #.

const string connectionString = "Specifica qui la stringa di connessione al database.";

Notare che è necessario assegnare un valore a una variabile costante nel momento in cui la si definisce. Notare inoltre che non è possibile utilizzare la parola chiave const per creare un oggetto costante. La parola chiave const può essere applicata solo ai tipi di dati primitivi (come int, float, chars e booleani) e stringhe. Comprendiamo l'uso di const con un esempio.

Considera la seguente classe denominata Author. Daremo alla classe Author solo alcune proprietà per renderlo semplice.

public class Autore

    {

        public int Id {get; impostato; }

        stringa pubblica FirstName {get; impostato; }

        stringa pubblica LastName {get; impostato; }

        stringa pubblica Indirizzo {get; impostato; }

    }

Ora, se provi a creare un oggetto costante della classe Author utilizzando la parola chiave const, osserverai l'errore di compilazione mostrato nella Figura 1 di seguito.

Questo errore indica che il lato destro dell'operatore di assegnazione deve avere un valore costante per soddisfare l'espressione. Poiché l'affermazione new Author()non è una costante, l'assegnazione non è valida e quindi l'errore.

Usa la parola chiave readonly in C #

La parola chiave readonly può essere utilizzata per definire una variabile o un oggetto come solo leggibile. Ciò significa che alla variabile o all'oggetto può essere assegnato un valore nell'ambito della classe o solo in un costruttore. Non è possibile modificare il valore o riassegnare un valore a una variabile o un oggetto di sola lettura in qualsiasi altro metodo tranne il costruttore.

Capiamolo con un esempio. Considera la seguente classe denominata DbManager.

classe pubblica DbManager

    {

        public readonly string connectionString =

        "Specificare qui la stringa di connessione al database.";

        public DbManager ()

        {

            connectionString = "Puoi riassegnare un valore qui.";

        }

        public void ReAssign ()

        {

            connectionString = "Questo non è consentito";

        }

    }

Il codice precedente non verrà compilato e verrà visualizzato l'errore mostrato nella Figura 2.

Usa la parola chiave statica in C #

La parola chiave statica in C # può essere utilizzata su una variabile, un metodo o un oggetto. Notare che un membro statico di una classe appartiene al tipo dell'oggetto piuttosto che all'istanza del tipo. In altre parole, ai membri statici si accede con il nome della classe, non con il nome di un'istanza. 

Considera la seguente classe denominata Utility che contiene un metodo statico.

utilità di classe pubblica

    {

        public static void SomeMethod ()

        {

            // Scrivi qui il tuo codice

        }

    }

Non è possibile chiamare il metodo SomeMethod()utilizzando un'istanza della classe Utility. Piuttosto, dovresti chiamare questo metodo usando la seguente sintassi.

Utility.SomeMethod ();

La stessa regola si applica per una variabile statica o un oggetto statico. È possibile fare riferimento a un membro statico di una classe solo utilizzando la sintassi mostrata di seguito.

ClassName . Membro;

O

ClassName . Membro();

Un costruttore di una classe può essere statico. Un costruttore statico di una classe viene utilizzato per inizializzare i membri statici della classe. Tuttavia, un costruttore statico di una classe non può accettare parametri.

Una regola per const, readonly e static

Ecco la regola pratica che puoi seguire quando lavori con le parole chiave const, readonly e static. Utilizzare la parola chiave const quando il valore contenuto in una variabile non cambierà mai durante la durata dell'applicazione. Utilizzare la parola chiave readonly quando non si è sicuri se il valore di una variabile di un oggetto debba cambiare ma si desidera impedire ad altre classi di modificare il valore. Utilizzare la parola chiave statica quando si desidera che il membro di una classe appartenga al tipo anziché all'istanza del tipo.

Come fare di più in C #:

  • Come usare le annotazioni dei dati in C #
  • Come lavorare con i GUID in C # 8
  • Quando usare una classe astratta e un'interfaccia in C #
  • Come lavorare con AutoMapper in C #
  • Come usare le espressioni lambda in C #
  • Come lavorare con i delegati Action, Func e Predicate in C #
  • Come lavorare con i delegati in C #
  • Come implementare un semplice logger in C #
  • Come lavorare con gli attributi in C #
  • Come lavorare con log4net in C #
  • Come implementare il modello di progettazione del repository in C #
  • Come lavorare con la riflessione in C #
  • Come lavorare con Filesystemwatcher in C #
  • Come eseguire l'inizializzazione pigra in C #
  • Come lavorare con MSMQ in C #
  • Come lavorare con i metodi di estensione in C #
  • Come utilizzare espressioni lambda in C #
  • Quando usare la parola chiave volatile in C #
  • Come utilizzare la parola chiave yield in C #
  • Come implementare il polimorfismo in C #
  • Come creare il proprio pianificatore di attività in C #
  • Come lavorare con RabbitMQ in C #
  • Come lavorare con una tupla in C #
  • Esplorazione di metodi virtuali e astratti in C #
  • Come utilizzare Dapper ORM in C #
  • Come utilizzare il modello di progettazione del peso mosca in C #