- Autor

- Nombre
- Nelson Silva
- Social
Introducción
El lenguaje C# es rico en tipos, ofreciendo a los programadores una amplia variedad de herramientas para resolver problemas. Entre estas herramientas se encuentran las estructuras (structs), que son especialmente útiles para representar objetos ligeros que tienen semántica de valor.
¿Qué es una estructura (struct)?
En C#, una struct es un tipo de valor que se utiliza para encapsular pequeñas cantidades de datos relacionados. Debido a su naturaleza de tipo de valor, ocupa directamente un espacio en la memoria, evitando la asignación en el heap, lo que la hace más rápida en ciertas circunstancias en comparación con las clases.
Estructuras vs Clases
Diferencias entre structs y clases:
- Tipo de Asignación: Mientras que una
structes un tipo de valor, una clase es un tipo de referencia. Esta diferencia fundamental dicta el comportamiento en diversas operaciones, especialmente en la asignación y el paso de parámetros. - Herencia: Las
structsno admiten herencia, excepto la herencia de interfaces. - Constructores: Una
structno puede tener un constructor sin parámetros. Sin embargo, puede tener constructores parametrizados. - Destructores: Las
structsno pueden tener destructores. Los destructores se usan en las clases para realizar cualquier limpieza necesaria antes de que el recolector de basura recopile un objeto. - Modificadores de acceso: El modificador
protectedno tiene sentido en unastruct, ya que no admiten herencia.
¿Cuándo usar una struct?
Las structs son ideales en situaciones donde:
- La instancia es pequeña y tiene semántica de valor.
- Es deseable evitar asignaciones en el heap.
- El objeto representa un único valor lógico, como un número o un punto de datos.
Ejemplo Práctico
Aquí hay un ejemplo de una struct en acción:
using System;
namespace Base {
class Struct {
public void Run() {
var estructura = new Estructura();
estructura.Numero = 200;
// El número debe ser >= 0 y <= 100.
}
}
struct Estructura : INumero {
private int numero;
public int Numero {
set {
if (value >= 0 && value <= 100) {
numero = value;
ImprimirNumero();
}
else
Console.WriteLine("El número debe ser >= 0 y <= 100.");
}
}
public void ImprimirNumero() {
Console.WriteLine($"Número: {numero}");
}
}
interface INumero {
void ImprimirNumero();
}
}
Conclusión
La elección entre usar una struct o una clase en C# depende de las necesidades específicas de tu proyecto. Esperamos que con este artículo hayas adquirido una comprensión clara de las estructuras y cuándo pueden ser útiles.