elemencie nie może być null, ale obejście sprawdzania struct przed jego domyślnie może dać fałszywie ujemne, jeśli rzeczywiście chcemy przechowywać wartości odpowiadające wartości domyślnych w niej w dowolnym momencie.
(Na przykład struktura o wartości (0,0,0)
może być nietknięte domyślny, lub może to być przechowywanie punkt początkowy w przestrzeni 3D).
Innym rozwiązaniem, które pozwala uniknąć tego fałszywego negatywnego problemu byłoby po prostu dodaj inna właściwość struktury - np bool lub int - do śledzenia, czy dane zostały w nim zapisane. Następnie każdy konstruktor, który inicjuje strukturę z faktycznym zestawem danych, ustawia tę wartość na true/1. W domyślnej strukturze wartość ta nadal będzie wynosić false/0, więc sprawdzanie przed default(MyStruct)
nigdy nie powinno dać fałszywego negatywu, nawet jeśli wszystkie pozostałe dane w nim przechowywane są zgodne z wartościami domyślnymi.
public Struct MyStruct {
public float x { get; private set; }
public bool initialized { get; private set; }
public MyStruct(float _x){
x=_x;
initialized = true;
}
}
Dlaczego używasz struct przeciwko klasie? –