Structs (Guía de programación de C#)Structs (C# Programming Guide)

Los structs se definen mediante la palabra clave struct, por ejemplo:Structs are defined by using the struct keyword, for example:

public struct PostalAddress
{
    // Fields, properties, methods and events go here...
}

Los structs comparten la mayor parte de la sintaxis de las clases.Structs share most of the same syntax as classes. El nombre de la estructura debe ser un nombre de identificador de C# válido.The name of the struct must be a valid C# identifier name. Los structs son más limitados que las clases en lo siguiente:Structs are more limited than classes in the following ways:

  • Dentro de una declaración de struct, los campos no se pueden inicializar a menos que se declaren como constantes o estáticos.Within a struct declaration, fields cannot be initialized unless they are declared as const or static.
  • Un struct no puede declarar un constructor sin parámetros ni un finalizador.A struct cannot declare a parameterless constructor (a constructor without parameters) or a finalizer.
  • Los structs se copian en la asignación.Structs are copied on assignment. Cuando se asigna un struct a una variable nueva, se copian todos los datos y las modificaciones que se realicen en la nueva copia no cambiarán los datos de la copia original.When a struct is assigned to a new variable, all the data is copied, and any modification to the new copy does not change the data for the original copy. Es importante que lo recuerde al trabajar con colecciones de tipos de valor como Dictionary<string, myStruct>.This is important to remember when working with collections of value types such as Dictionary<string, myStruct>.
  • Los structs son tipos de valor, a diferencia de las clases, que son tipos de referencia.Structs are value types, unlike classes, which are reference types.
  • A diferencia de las clases, se pueden crear instancias de structs sin usar un operador new.Unlike classes, structs can be instantiated without using a new operator.
  • Los structs pueden declarar constructores que tengan parámetros.Structs can declare constructors that have parameters.
  • Así, un struct no puede heredar de otra clase o de otro struct, como tampoco puede ser la base de una clase.A struct cannot inherit from another struct or class, and it cannot be the base of a class. Todos los structs heredan directamente de ValueType, que hereda de Object.All structs inherit directly from ValueType, which inherits from Object.
  • Un struct puede implementar interfaces.A struct can implement interfaces.
  • Una estructura no puede ser null y a una variable de estructura no se le puede asignar null a menos que la variable se declare como tipo que acepta valores NULL.A struct cannot be null, and a struct variable cannot be assigned null unless the variable is declared as a nullable type.

Vea tambiénSee also