Diferencia entre Struct y Class en C#
En este tutorial, discutiremos las diferencias y similitudes entre estructuras y clases en C#.
Estructura en C#
La palabra clave struct
define una estructura en C#. Similar a una clase, una estructura puede tener variables, propiedades y funciones. Podemos definir constructores para estructuras en C#. Pero no podemos definir constructores predeterminados para estructuras en C#. No podemos definir destructores para estructuras en C#. Las estructuras también pueden implementar interfaces en C#. La principal diferencia entre estructuras y clases es que no podemos usar una estructura como base de otras estructuras o clases para la herencia. El siguiente ejemplo de código nos muestra cómo definir una estructura simple usando la palabra clave struct
en C#.
struct MyStructure {
public int x;
};
En el código anterior, definimos una estructura con la palabra clave struct
en C#. Las estructuras se pueden utilizar creando una instancia. El código para crear una instancia de una estructura se proporciona a continuación.
MyStructure S = new MyStructure();
En el código anterior, creamos una instancia de la estructura MyStructure
con la palabra clave new
en C#.
Clase en C#
La palabra clave class
define una clase en C#. Similar a una estructura, una clase puede tener variables, propiedades y funciones en C#. También podemos definir constructores y destructores predeterminados para clases en C#. Una característica clave de las clases es la herencia. Entonces, una clase puede usarse como base de otras clases para la herencia. Otra característica única de las clases es el polimorfismo. El siguiente ejemplo de código nos muestra cómo definir una clase simple usando la palabra clave class
en C#.
class MyClass {
int x;
public MyClass(int a) {
this.x = a;
}
public void setx(int a) {
this.x = a;
}
public void show() {
Console.WriteLine("The value of x = {0}", x);
}
}
En el código anterior, definimos una clase con la palabra clave class
en C#. Las clases se pueden utilizar creando una instancia. El código para crear una instancia de una clase se proporciona a continuación.
MyClass C = new MyClass(100);
En el código anterior, creamos una instancia de la clase MyClass
con la palabra clave new
en C#.
Diferencia entre estructura y clase en C#
Las estructuras son variables de tipo valor y viven en la pila. Las clases son variables de tipo de referencia y viven en el montón con referencia a ese montón dentro de la pila.
Las estructuras no pueden tener valores nulos, mientras que las clases pueden tener valores nulos. Significa que una variable de tipo valor debe tener un valor, mientras que una variable de tipo de referencia puede apuntar o no a una dirección de memoria. La diferencia entre estructuras y clases en C# se demuestra en el siguiente ejemplo de codificación.
MyStructure S = new MyStructure();
MyStructure S2 = S;
S.x = 100;
S2.x = 200;
Console.WriteLine("Structure 1 = {0}", S.x);
Console.WriteLine("Structure 2 = {0}", S2.x);
Producción :
Structure 1 = 100
Structure 2 = 200
Primero creamos una instancia S
de la estructura MyStructure
y luego creamos otra copia de la misma instancia: S2
. Después de eso, inicializamos los valores dentro de ambas instancias.
En la salida, obtenemos dos valores diferentes para dos copias diferentes de la instancia. Esto significa que hay dos copias separadas de la estructura MyStructure
dentro de la pila. Copiar una variable de tipo de valor en otra variable crea una copia separada de todo el contenido de la variable de tipo de valor.
En el siguiente ejemplo de código, haremos lo mismo con la clase MyClass
.
MyClass C = new MyClass(100);
MyClass newC = C;
newC.setx(100);
newC.setx(200);
C.show();
newC.show();
Producción :
The value of x = 200
The value of x = 200
Primero creamos una instancia C
de la clase MyClass
y luego copiamos esa instancia en otra instancia, newC
, de la clase MyClass
. Después de eso, establecemos el valor de la variable x
dentro de ambas instancias con la función setx()
.
En la salida, obtenemos los mismos valores de la variable x
dentro de ambas instancias. Esto significa que las instancias C
y newC
apuntan a la misma ubicación de memoria dentro del montón. Solo copia la referencia de la variable de tipo de referencia cuando copia una variable de tipo de referencia en otra variable.
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn