C# | Estructuras | Serie 1 – Part 1

La estructura es un tipo de valor y una colección de variables de diferentes tipos de datos bajo una sola unidad. Es casi similar a una clase porque ambos son tipos de datos definidos por el usuario y ambos contienen muchos tipos de datos diferentes. C# proporciona la capacidad de utilizar tipos de datos predefinidos. Sin embargo, a veces el usuario puede necesitar definir sus propios tipos de datos, que también se conocen como tipos de datos definidos por el usuario . Aunque viene bajo el tipo de valor, el usuario puede modificarlo según los requisitos y es por eso que también se denomina tipo de datos definido por el usuario.
Definición de estructura: en C#, la estructura se define mediante structpalabra clave. Usando la palabra clave struct, se puede definir la estructura que consta de diferentes tipos de datos en ella. Una estructura también puede contener constructores, constantes, campos, métodos, propiedades, indexadores y eventos, etc. 
 

  • Sintaxis:
     
Access_Modifier struct structure_name
{

   // Fields 
   // Parameterized constructor 
   // Constants 
   // Properties 
   // Indexers 
   // Events 
   // Methods etc.
   
}
  • Ejemplo: 
     

CSHARP

// C# program to illustrate the
// Declaration of structure
using System;
namespace ConsoleApplication {
 
// Defining structure
public struct Person
{
    // Declaring different data types
    public string Name;
    public int Age;
    public int Weight;
 
}
 
class Geeks {
     
    // Main Method
    static void Main(string[] args)
    {
 
        // Declare P1 of type Person
        Person P1;
 
        // P1's data
        P1.Name = "Keshav Gupta";
        P1.Age = 21;
        P1.Weight = 80;
 
        // Displaying the values
        Console.WriteLine("Data Stored in P1 is " +
                           P1.Name + ", age is " +
                           P1.Age + " and weight is " +
                           P1.Weight);
 
    }
}
}
  •  
Producción: 

Data Stored in P1 is Keshav Gupta, age is 21 and weight is 80

 

  • Explicación: en el código anterior, se crea una estructura con el nombre «Persona» con los miembros de datos Nombre , Edad y Peso . En el método principal, se crea P1 del tipo de estructura Persona. Ahora, P1 puede acceder a sus miembros de datos con la ayuda de .(punto) Operador
     

Copiar estructura: en C#, el usuario puede copiar un objeto de estructura en otro usando el operador ‘=’ (asignación).
 

  • Sintaxis:
     
Structure_object_destination = structure_object_source;
  • Ejemplo:
     

CSHARP

// C# program to illustrate copy the structure
using System;
namespace ConsoleApplication {
 
// Defining structure
public struct Person
{
    // Declaring different data types
    public string Name;
    public int Age;
    public int Weight;
 
}
 
class Geeks {
     
    // Main Method
    static void Main(string[] args)
    {
 
        // Declare P1 of type Person
        Person P1;
 
        // P1's data
        P1.Name = "Keshav Gupta";
        P1.Age = 21;
        P1.Weight = 80;
         
        // Declare P2 of type Person
        Person P2;
         
        // Copying the values of P1 into P2
         P2 = P1;
 
        // Displaying the values of P1
        Console.WriteLine("Values Stored in P1");
        Console.WriteLine("Name: " +P1.Name);
        Console.WriteLine("Age: " +P1.Age);
        Console.WriteLine("Weight: " +P1.Weight);
        Console.WriteLine("");
         
        // Displaying the values of P2
        Console.WriteLine("Values Stored in P2");
        Console.WriteLine("Name: " +P2.Name);
        Console.WriteLine("Age: " +P2.Age);
        Console.WriteLine("Weight: " +P2.Weight);
                            
    }
}
}
  •  
Producción: 

Values Stored in P1
Name: Keshav Gupta
Age: 21
Weight: 80

Values Stored in P2
Name: Keshav Gupta
Age: 21
Weight: 80

 

  • Explicación: Los miembros de datos de la estructura Persona se inicializan con la ayuda de P1 y los valores de los miembros de datos pueden ser copiados a P2 por P1 usando ‘=’ (operador de asignación).

Anidamiento de estructuras: C# permite la declaración de una estructura en otra estructura y este concepto se denomina anidamiento de la estructura.
 

  • Ejemplo:
     

CSHARP

// C# program to illustrate Nesting of structures
using System;
namespace ConsoleApplication {
 
// first structure defined
// with public modifier
public struct Address
{
     
    // data member of Address structure
    public string City;
    public string State;
}
 
 
// Another structure
struct Person
{
     
    // data member of Person structure
    public string Name;
    public int Age;
     
    // Nesting of Address structure
    // by creating A1 of type Address
    public Address A1;
}
 
class Geeks {
     
    // Main method
    static void Main(string[] args)
    {
 
        // Declare p1 of type Person
        Person p1;
 
        // Assigning values to the variables
        p1.Name = "Raman";
        p1.Age = 12;
         
        // Assigning values to the nested
        // structure data members
        p1.A1.City = "ABC_City";
        p1.A1.State = "XYZ_State";
         
        Console.WriteLine("Values Stored in p1");
        Console.WriteLine("Name: " +p1.Name);
        Console.WriteLine("Age: " +p1.Age);
        Console.WriteLine("City: " +p1.A1.City);
        Console.WriteLine("State: " +p1.A1.State);
 
    }
}
}
  •  
Producción: 

Values Stored in p1
Name: Raman
Age: 12
City: ABC_City
State: XYZ_State

 

Puntos importantes sobre las estructuras: 
 

  • Una vez que las estructuras quedan fuera del alcance, se desasigna automáticamente.
  • Se crea mucho más fácil y rápidamente que los tipos de montón.
  • Usando la estructura, se vuelve fácil copiar los valores de la variable en la pila.
  • Una estructura es un tipo de valor, mientras que una clase es un tipo de referencia.

Diferencia entre estructuras y clase: 

Categoría Estructura Clase
Tipo de datos Tipo de valor Tipo de referencia
Operación de asignación Copia el valor Copia la referencia
Constructores sin parámetros No permitido Permitió
Herencia No soportado Siempre apoyado

Publicación traducida automáticamente

Artículo escrito por keshav_786 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Categories C#

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *