Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Entendiendo los Structs en C#: Definición, Uso y Diferencias Clave

Structs en C#

Aprende a definir, instanciar y trabajar con structs en C#, incluyendo constructores, propiedades y sus diferencias clave con las clases.

En C#, un struct (estructura) funciona de manera similar a una clase pero es un tipo por valor, lo que significa que almacena los datos directamente en lugar de una referencia.

Supongamos que queremos almacenar el nombre y la edad de una persona. Podemos crear dos variables: nombre y edad y almacenar valores.

Sin embargo, si necesitamos mantener esta información para varias personas, declarar variables separadas se vuelve tedioso. Definir un struct que contenga nombre y edad nos permite reutilizar el mismo diseño para cada persona.


Definir struct en C#

En C#, usamos la palabra clave struct para declarar un struct. Por ejemplo:

struct Empleado { public int id; }

Aquí, id es un campo dentro del struct. Un struct también puede contener métodos, indexadores y más.


Declarar variable struct

Antes de usar un struct, debes crear una variable de struct. La sintaxis es:

struct Empleado { public int id; } // declarar emp de struct Empleado Empleado emp;

En el ejemplo, definimos un struct llamado Empleado y declaramos una variable emp de ese tipo.


Acceder a struct en C#

Accede a los miembros del struct usando el operador punto (.):

Empleado emp; emp.id = 1;

Esto asigna el valor 1 al campo id del struct Empleado.

Nota: Los tipos primitivos como int, bool y float son structs predefinidos en C#.


Ejemplo: Struct en C#

using System; namespace CsharpStruct { // definiendo struct struct Empleado { public int id; public void obtenerId(int id) { Console.WriteLine("ID de Empleado: " + id); } } class Programa { static void Main(string[] args) { // declarar emp de struct Empleado Empleado emp; // accede y establece campo del struct emp.id = 1; // accede a métodos del struct emp.obtenerId(emp.id); Console.ReadLine(); } } }

Salida

ID de Empleado: 1

El programa crea un struct Empleado, establece su campo id y llama al método obtenerId para mostrarlo.

También puedes instanciar un struct con la palabra clave new:

Empleado emp = new Empleado();

Esto llama al constructor sin parámetros e inicializa todos los campos a sus valores por defecto.


Constructores en Structs de C#

Los structs pueden definir constructores para inicializar campos. Ejemplo:

struct Empleado { public int id; // constructor public Empleado(int idEmpleado) { id = idEmpleado; } }

Nota: Antes de C# 10, los structs no pueden contener constructores sin parámetros.


Ejemplo: Constructor en Structs de C#

using System; namespace CsharpStruct { // definiendo struct struct Empleado { public int id; public string nombre; // constructor con parámetros public Empleado(int idEmpleado, string nombreEmpleado) { id = idEmpleado; nombre = nombreEmpleado; } } class Programa { static void Main(string[] args) { // llama al constructor del struct Empleado emp = new Empleado(1, "Brian"); Console.WriteLine("Nombre del Empleado: " + emp.nombre); Console.WriteLine("ID del Empleado: " + emp.id); Console.ReadLine(); } } }

Salida

Nombre del Empleado: Brian ID del Empleado: 1

En este ejemplo, el constructor asigna valores a todos los campos. No inicializar cada campo resulta en error de compilación.


Propiedades en Structs de C#

Los structs pueden exponer propiedades para encapsulación. Ejemplo:

using System; namespace CsharpStruct { // definiendo struct struct Empleado { public int id; // crea propiedad public int Id { get { return id; } set { id = value; } } } class Programa { static void Main(string[] args) { Empleado emp = new Empleado(); emp.Id = 1; Console.WriteLine("ID del Empleado: " + emp.Id); Console.ReadLine(); } } }

Salida

ID del Empleado: 1

Aquí, la propiedad Id proporciona acceso controlado al campo id.


Diferencia entre class y struct en C#

Aunque las clases y structs comparten sintaxis similar, difieren fundamentalmente:

Ejemplo de comportamiento de referencia de clase:

using System; namespace CsharpStruct { class Empleado { public string nombre; } class Programa { static void Main(string[] args) { Empleado emp1 = new Empleado(); emp1.nombre = "Juan"; Empleado emp2 = emp1; emp2.nombre = "Ed"; Console.WriteLine("Nombre Empleado1: " + emp1.nombre); Console.ReadLine(); } } }

Salida

Nombre Empleado1: Ed

Ejemplo de comportamiento de valor de struct:

using System; namespace CsharpStruct { struct Empleado { public string nombre; } class Programa { static void Main(string[] args) { Empleado emp1 = new Empleado(); emp1.nombre = "Juan"; Empleado emp2 = emp1; emp2.nombre = "Ed"; Console.WriteLine("Nombre Empleado1: " + emp1.nombre); Console.ReadLine(); } } }

Salida

Nombre Empleado1: Juan

En el ejemplo del struct, emp2 recibe una copia de emp1, por lo que modificaciones a emp2 no afectan a emp1.

Estas distinciones hacen que los structs sean ideales para pequeñas estructuras de datos inmutables que se benefician de la asignación en pila y semántica de valor.

Lenguaje C

  1. El caso para modernizar la planificación de turnos y retener talento y productividad
  2. Mejore la seguridad laboral: por qué las verificaciones periódicas de antecedentes de empleados son importantes
  3. 4 estrategias probadas para fortalecer el compromiso de empleados durante la COVID-19
  4. DVIRC asciende a Alan Shell a Director de Servicios Lean/CI y da la bienvenida a nuevas contrataciones
  5. Mejorando la seguridad laboral: Cómo la robótica manufacturera protege a los empleados
  6. Mantente Adelante en Futuro del Trabajo: Estrategias para Vencer Competencia
  7. Analítica de Productividad de Empleados: Desbloqueando Insights en la Era IoT
  8. Dominando structs en C: Definición, variables, acceso y ejemplos avanzados
  9. Dominando structs y punteros en C: Guía práctica
  10. Dominando structs en C: Paso, retorno y manejo por referencia
  11. Structs en C++ explicados con un ejemplo práctico