Un componente in Visual C#

Di seguito è illustrato l'aspetto del componente stringa semplice in Visual C#:

Listato 1. Componente in Visual C# (CompCS.cs)

using System;

namespace CompCS {
   public class StringComponent {
      private string[] StringsSet;

      public StringComponent() {
         StringsSet = new string[] {
            "C# String 0",
            "C# String 1",
            "C# String 2",
            "C# String 3"
         };
      }

     public string GetString(int index) {
        if ((index < 0) || (index >= 
           StringsSet.Length)) {
           throw new IndexOutOfRangeException();
         }
         return StringsSet[index];
      }

      public int Count {
         get { return StringsSet.Length; }
      }
   }
}

Come accennato in precedenza, si utilizza l'istruzione namespace per creare un nuovo spazio dei nomi per incapsulare le classi che verranno create:

namespace CompCS {

Questo spazio dei nomi può essere nidificato nonché suddiviso su più file. In un singolo file di codice sorgente possono inoltre essere contenuti più spazi dei nomi non nidificati. Poiché in Visual C# tutto il codice deve essere contenuto in una classe, è richiesto uno spazio dei nomi per contenerlo.

public class StringComponent {

Verranno create istanze di StringComponent da Common Language Runtime e tali istanze verranno gestite nell'heap di Garbage Collection. Ogni volta che viene creata una nuova istanza di una classe viene eseguito il costruttore della classe, che ha lo stesso nome della classe e nessun tipo restituito.

public StringComponent() {

Poiché Visual C# utilizza solo tipi gestiti, non è necessario specificare nulla durante la dichiarazione delle variabili, a differenza di quanto richiesto nelle estensioni gestite per C++.

Di seguito viene illustrato il metodo GetString che accetta un valore integer e restituisce una stringa. Questo metodo è semplice e uguale nei tre linguaggi di esempio.

public string GetString(int index) {
   ...
   return StringsSet[index];
}

Si noti la dichiarazione throw nel metodo GetString:

throw new IndexOutOfRangeException();

Questa dichiarazione consente di creare e generare un oggetto per la gestione delle eccezioni basata su runtime di tipo IndexOutOfRangeException.

Infine, viene creata la proprietà Length di sola lettura:

public int Count {
   get { return StringsSet.Length; }
}

Il processo di compilazione per un componente Visual C# non è molto più complesso di quello per un programma autonomo:

csc.exe /t:library /debug+ /out:..\bin\CompCS.dll CompCS.cs

Come nel caso del componente nelle estensioni gestite per C++, si utilizza l'opzione /out per porre il componente compilato nella sottodirectory ..\Bin. È necessario inoltre specificare l'opzione /t(arget):library per creare una DLL invece che un file eseguibile con estensione DLL.

Vedere anche

Un componente in Visual Basic | Client per i componenti semplici | Riepilogo dell'esercitazione di sviluppo | Appendice A: strumenti per l'esplorazione degli spazi dei nomi