Costrutti Particolari nelle Classi C#

I concetti che riguardano le classi del C# nascono da altri linguaggi di programmazione e ne riprendono la logica, mentre altri costrutti particolari sono stati studiati per aiutare i programmatori.
In passato i programmatori Windows utilizzavano delle librerie ( DLL ) per distribuire le funzioni dei loro programmi, c’erano due tipi di collegamento per poter esportare questi metodi, statico e dinamico. Questo tipo di programmazione portava però a dei problemi di portabilità e discrepanza, infatti programmi e librerie di versioni differenti non potevano funzionare. Con l’avvento del .NET si sono eliminate le librerie statiche ed è stato fatto in modo che quelle dinamiche fossero autodescrittive. In questo modo le DLL vengono utilizzate sia a runtime che in fase di compilazione e linking. Queste DLL comprendono classi e componenti che sono state denominate assembly.
Nella programmazione ad oggetti un metodo può avere visibilità come privato, protetto e pubblico, con il C# esiste anche un altro costrutto: internal. Con questo costrutto particolare il metodo rimane pubblico all’interno dell’assembly in cui viene creato e privato se utilizzato da altri assembly.
All’interno di una classe è possibile dichiarare un attributo come static, il compilatore in questo caso crea una sola istanza di tale variabile che sarà comune a tutte le istanze della classe. In questo modo è possibile rendere persistenti gli oggetti, vediamo un semplice esempio che conta il numero delle volte che un oggetto viene istanziato.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestCons
{
    class Test
    {
        static int nCounter = 0;
        public Test()
        {
            nCounter++;
            System.Console.WriteLine
                  ("Numero di istanze: " + nCounter);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Test test1 = new Test();
            Test test2 = new Test();
            Test test3 = new Test();
        }
    }
}

Può anche nascere l’esigenza di creare una variabile una sola volta all’interno del programma e renderla non modificabile durante tutta la sessione di lavoro. In C# abbiamo un costrutto particolare che consente di fare tutto questo, si tratta di dichiarare readonly la variabile d’istanza che intendiamo utilizzare per tale scopo.
Un altro tipo di variabile è quella di tipo const, in questo caso abbiamo un comportamento simile a readonly, l’unica differenza è che non è possibile attribuire un valore alla variabile const a runtime, tale valore deve essere noto già al momento della compilazione. Un’altra caratteristica delle variabili const è che queste sono attive in memoria già prima che venga creata l’istanza della classe che la contiene.
In questo articolo abbiamo visto alcuni costrutti particolari utilizzati all’interno delle classi in C#, questi dovrebbero permettere di approfondire meglio il modo nel quale sono stati sviluppati i componenti che fanno parte dell’ambiente .NET e per questo poter sviluppare al meglio anche i nostri lavori.

Informazioni su Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.
Questa voce è stata pubblicata in C# (sharp). Contrassegna il permalink.