C # - Estructuras

En C #, una estructura es un tipo de datos de tipo de valor. Le ayuda a hacer que una sola variable contenga datos relacionados de varios tipos de datos. losstruct La palabra clave se utiliza para crear una estructura.

Las estructuras se utilizan para representar un registro. Suponga que desea realizar un seguimiento de sus libros en una biblioteca. Es posible que desee realizar un seguimiento de los siguientes atributos sobre cada libro:

  • Title
  • Author
  • Subject
  • ID del libro

Definición de una estructura

Para definir una estructura, debe utilizar la instrucción struct. La declaración de estructura define un nuevo tipo de datos, con más de un miembro para su programa.

Por ejemplo, esta es la forma en que puede declarar la estructura del Libro:

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

El siguiente programa muestra el uso de la estructura:

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

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

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

Características de las estructuras C #

Ya ha utilizado una estructura simple llamada Libros. Las estructuras en C # son bastante diferentes de las de C o C ++ tradicionales. Las estructuras de C # tienen las siguientes características:

  • Las estructuras pueden tener métodos, campos, indexadores, propiedades, métodos de operador y eventos.

  • Las estructuras pueden tener constructores definidos, pero no destructores. Sin embargo, no puede definir un constructor predeterminado para una estructura. El constructor predeterminado se define automáticamente y no se puede cambiar.

  • A diferencia de las clases, las estructuras no pueden heredar otras estructuras o clases.

  • Las estructuras no se pueden utilizar como base para otras estructuras o clases.

  • Una estructura puede implementar una o más interfaces.

  • Los miembros de la estructura no se pueden especificar como abstractos, virtuales o protegidos.

  • Cuando crea un objeto de estructura usando el Newoperador, se crea y se llama al constructor apropiado. A diferencia de las clases, se pueden crear instancias de estructuras sin usar el operador New.

  • Si no se utiliza el operador Nuevo, los campos permanecen sin asignar y el objeto no se puede utilizar hasta que se inicialicen todos los campos.

Clase versus estructura

Las clases y estructuras tienen las siguientes diferencias básicas:

  • las clases son tipos de referencia y las estructuras son tipos de valor
  • las estructuras no admiten la herencia
  • las estructuras no pueden tener un constructor predeterminado

A la luz de las discusiones anteriores, reescribamos el ejemplo anterior:

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

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

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