C # - Structures

En C #, une structure est un type de données de type valeur. Il vous aide à faire en sorte qu'une seule variable contienne des données liées de différents types de données. lestruct Le mot-clé est utilisé pour créer une structure.

Les structures sont utilisées pour représenter un enregistrement. Supposons que vous souhaitiez garder une trace de vos livres dans une bibliothèque. Vous souhaiterez peut-être suivre les attributs suivants pour chaque livre -

  • Title
  • Author
  • Subject
  • ID du livre

Définition d'une structure

Pour définir une structure, vous devez utiliser l'instruction struct. L'instruction struct définit un nouveau type de données, avec plus d'un membre pour votre programme.

Par exemple, voici la façon dont vous pouvez déclarer la structure Book -

struct Books {
   public string title;
   public string author;
   public string subject;
   public int book_id;
};

Le programme suivant montre l'utilisation de la structure -

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();
   }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

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

Caractéristiques des structures C #

Vous avez déjà utilisé une structure simple nommée Livres. Les structures en C # sont assez différentes de celles en C ou C ++ traditionnel. Les structures C # ont les caractéristiques suivantes -

  • Les structures peuvent avoir des méthodes, des champs, des indexeurs, des propriétés, des méthodes d'opérateur et des événements.

  • Les structures peuvent avoir des constructeurs définis, mais pas des destructeurs. Cependant, vous ne pouvez pas définir de constructeur par défaut pour une structure. Le constructeur par défaut est défini automatiquement et ne peut pas être modifié.

  • Contrairement aux classes, les structures ne peuvent pas hériter d'autres structures ou classes.

  • Les structures ne peuvent pas être utilisées comme base pour d'autres structures ou classes.

  • Une structure peut implémenter une ou plusieurs interfaces.

  • Les membres de la structure ne peuvent pas être spécifiés comme abstraits, virtuels ou protégés.

  • Lorsque vous créez un objet struct à l'aide de Newopérateur, il est créé et le constructeur approprié est appelé. Contrairement aux classes, les structures peuvent être instanciées sans utiliser l'opérateur New.

  • Si l'opérateur Nouveau n'est pas utilisé, les champs restent non attribués et l'objet ne peut pas être utilisé tant que tous les champs ne sont pas initialisés.

Classe contre structure

Les classes et les structures présentent les différences fondamentales suivantes -

  • les classes sont des types de référence et les structures sont des types de valeur
  • les structures ne prennent pas en charge l'héritage
  • les structures ne peuvent pas avoir de constructeur par défaut

À la lumière des discussions ci-dessus, réécrivons l'exemple précédent -

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();
   }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

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