Strutture (confronto tra C# e Java)
Aggiornamento: novembre 2007
C# supporta la parola chiave struct, un altro elemento specifico del linguaggio C ma non disponibile in Java. È possibile considerare struct come una classe leggera. Nonostante le structs possano contenere costruttori, costanti, campi, metodi, proprietà, indicizzatori, operatori e tipi nidificati, vengono utilizzate principalmente per incapsulare gruppi di campi correlati. Poiché le strutture sono tipi di valore, possono essere allocate in modo più efficiente delle classi. La differenza tra le structs e le classi consiste nel fatto che le strutture non possono essere astratte e non supportano l'ereditarietà dell'implementazione.
Nell'esempio riportato di seguito viene inizializzata una struct con la parola chiave new, chiamando il costruttore senza parametri predefinito, quindi vengono impostati i membri dell'istanza.
public struct Customer
{
public int ID;
public string Name;
public Customer(int customerID, string customerName)
{
ID = customerID;
Name = customerName;
}
}
class TestCustomer
{
static void Main()
{
Customer c1 = new Customer(); //using the default constructor
System.Console.WriteLine("Struct values before initialization:");
System.Console.WriteLine("ID = {0}, Name = {1}", c1.ID, c1.Name);
System.Console.WriteLine();
c1.ID = 100;
c1.Name = "Robert";
System.Console.WriteLine("Struct values after initialization:");
System.Console.WriteLine("ID = {0}, Name = {1}", c1.ID, c1.Name);
}
}
Output
Quando si compila e si esegue il codice precedente, l'output mostra che le variabili struct vengono inizializzate per impostazione predefinita. La variabile int viene inizializzata su 0 e la variabile string su una stringa vuota:
Struct values before initialization:
ID = 0, Name =
Struct values after initialization:
ID = 100, Name = Robert
Vedere anche
Attività
Concetti
Riferimenti
Strutture (Guida per programmatori C#)