C # - Strutture
In C #, una struttura è un tipo di dati di tipo valore. Ti aiuta a fare in modo che una singola variabile contenga dati correlati di vari tipi di dati. Ilstruct la parola chiave viene utilizzata per creare una struttura.
Le strutture vengono utilizzate per rappresentare un record. Supponi di voler tenere traccia dei tuoi libri in una biblioteca. Potresti voler monitorare i seguenti attributi di ogni libro:
- Title
- Author
- Subject
- ID libro
Definizione di una struttura
Per definire una struttura, è necessario utilizzare l'istruzione struct. L'istruzione struct definisce un nuovo tipo di dati, con più di un membro per il programma.
Ad esempio, ecco il modo in cui puoi dichiarare la struttura del libro:
struct Books {
public string title;
public string author;
public string subject;
public int book_id;
};
Il seguente programma mostra l'utilizzo della struttura:
using System;
struct Books {
public string title;
public string author;
public string subject;
public int book_id;
};
public class testStructure {
public static void Main(string[] args) {
Books Book1; /* Declare Book1 of type Book */
Books Book2; /* Declare Book2 of type Book */
/* book 1 specification */
Book1.title = "C Programming";
Book1.author = "Nuha Ali";
Book1.subject = "C Programming Tutorial";
Book1.book_id = 6495407;
/* book 2 specification */
Book2.title = "Telecom Billing";
Book2.author = "Zara Ali";
Book2.subject = "Telecom Billing Tutorial";
Book2.book_id = 6495700;
/* print Book1 info */
Console.WriteLine( "Book 1 title : {0}", Book1.title);
Console.WriteLine("Book 1 author : {0}", Book1.author);
Console.WriteLine("Book 1 subject : {0}", Book1.subject);
Console.WriteLine("Book 1 book_id :{0}", Book1.book_id);
/* print Book2 info */
Console.WriteLine("Book 2 title : {0}", Book2.title);
Console.WriteLine("Book 2 author : {0}", Book2.author);
Console.WriteLine("Book 2 subject : {0}", Book2.subject);
Console.WriteLine("Book 2 book_id : {0}", Book2.book_id);
Console.ReadKey();
}
}
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
Book 1 title : C Programming
Book 1 author : Nuha Ali
Book 1 subject : C Programming Tutorial
Book 1 book_id : 6495407
Book 2 title : Telecom Billing
Book 2 author : Zara Ali
Book 2 subject : Telecom Billing Tutorial
Book 2 book_id : 6495700
Funzionalità di strutture C #
Hai già utilizzato una struttura semplice denominata Libri. Le strutture in C # sono molto diverse da quelle in C o C ++ tradizionali. Le strutture C # hanno le seguenti caratteristiche:
Le strutture possono avere metodi, campi, indicizzatori, proprietà, metodi operatore ed eventi.
Le strutture possono avere costruttori definiti, ma non distruttori. Tuttavia, non è possibile definire un costruttore predefinito per una struttura. Il costruttore predefinito viene definito automaticamente e non può essere modificato.
A differenza delle classi, le strutture non possono ereditare altre strutture o classi.
Le strutture non possono essere utilizzate come base per altre strutture o classi.
Una struttura può implementare una o più interfacce.
I membri della struttura non possono essere specificati come astratti, virtuali o protetti.
Quando crei un oggetto struct usando il Newoperatore, viene creato e viene chiamato il costruttore appropriato. A differenza delle classi, le strutture possono essere istanziate senza utilizzare l'operatore New.
Se l'operatore Nuovo non viene utilizzato, i campi rimangono non assegnati e l'oggetto non può essere utilizzato finché tutti i campi non vengono inizializzati.
Classe contro struttura
Le classi e le strutture presentano le seguenti differenze di base:
- le classi sono tipi di riferimento e le strutture sono tipi di valore
- le strutture non supportano l'ereditarietà
- le strutture non possono avere un costruttore predefinito
Alla luce delle discussioni precedenti, riscriviamo l'esempio precedente:
using System;
struct Books {
private string title;
private string author;
private string subject;
private int book_id;
public void getValues(string t, string a, string s, int id) {
title = t;
author = a;
subject = s;
book_id = id;
}
public void display() {
Console.WriteLine("Title : {0}", title);
Console.WriteLine("Author : {0}", author);
Console.WriteLine("Subject : {0}", subject);
Console.WriteLine("Book_id :{0}", book_id);
}
};
public class testStructure {
public static void Main(string[] args) {
Books Book1 = new Books(); /* Declare Book1 of type Book */
Books Book2 = new Books(); /* Declare Book2 of type Book */
/* book 1 specification */
Book1.getValues("C Programming",
"Nuha Ali", "C Programming Tutorial",6495407);
/* book 2 specification */
Book2.getValues("Telecom Billing",
"Zara Ali", "Telecom Billing Tutorial", 6495700);
/* print Book1 info */
Book1.display();
/* print Book2 info */
Book2.display();
Console.ReadKey();
}
}
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
Title : C Programming
Author : Nuha Ali
Subject : C Programming Tutorial
Book_id : 6495407
Title : Telecom Billing
Author : Zara Ali
Subject : Telecom Billing Tutorial
Book_id : 6495700