Jeśli jeden statyczny element danych zależy od innego statycznego elementu danych, czy C#/.NET gwarantuje, że zależny element statyczny zostanie zainicjowany przed zależnym elementem?Czy C# rozwiązuje automatycznie zależności między statycznymi elementami danych?
Na przykład, mamy jedną klasę jak:
class Foo
{
public static string a = "abc";
public static string b = Foo.a + "def";
}
Kiedy Foo.b jest dostępne, jest to zawsze "abcdef" lub może być "def"?
Jeśli nie jest to zagwarantowane, czy istnieje lepszy sposób na upewnienie się, że zainicjowany członek został zainicjowany jako pierwszy?
Co z kolei oznacza, że jeśli programista konserwacyjny zamieni te dwie linie, tak, że b = a + "def" pojawi się jako pierwszy, b zostanie zainicjowany jako "def", ponieważ a ma wartość zerową, gdy inicjalizowano b. To znaczy. robiąc coś takiego, bierzesz zależność od kolejności deklaracji. – itowlson