Las estructuras no pueden ser nulas, pero la solución de comprobar una estructura contra su valor predeterminado puede dar un falso negativo si realmente desea almacenar valores equivalentes a los valores predeterminados en cualquier punto.
(Por ejemplo, una estructura con el valor (0,0,0)
podría ser un defecto tal cual, o se podría almacenar el punto de origen en el espacio 3D.)
Otro enfoque que evite este problema falso negativo sería simplemente añadir otra propiedad de la estructura, por ejemplo un bool o int - para rastrear si los datos realmente han sido almacenados en él. Luego, cualquier constructor que inicialice la estructura con datos reales establece este valor en verdadero/1. En la estructura predeterminada, este valor seguirá siendo falso/0, por lo que la comprobación en contra de default(MyStruct)
nunca debería darle un falso negativo incluso si todos los demás datos almacenados en él coinciden con los valores predeterminados.
public Struct MyStruct {
public float x { get; private set; }
public bool initialized { get; private set; }
public MyStruct(float _x){
x=_x;
initialized = true;
}
}
¿Por qué usas struct contra clase? –