Przepraszam za kiepskie sformułowanie, ale nie mogłem znaleźć lepszego sposobu na wyjaśnienie tego.Dlaczego BIGENDIA jest dyrektywą, jeśli nie została rozwiązana podczas kompilacji?
Z mojego rozumowania, C# jest językiem WORA - możesz napisać go na jednym komputerze i wdrożyć na innym, ponieważ MSIL nie jest skompilowany, dopóki aplikacja nie zostanie faktycznie uruchomiona.
Więc dlaczego jest tak, że BitConverter.IsLittleEndian
definiuje like so:
#if BIGENDIAN
public static readonly bool IsLittleEndian /* = false*/;
#else
public static readonly bool IsLittleEndian = true;
#endif
BIGENDIAN
tutaj jest dyrektywa preprocesora, co oznacza, że jest on rozwiązany w czasie kompilacji. Więc jeśli maszyna dewelopera jest mało zaawansowana, a cel używa dużego endianu, będzie IsLittleEndian
nadal raportować true
na komputerze docelowym?
'BIGENDIAN' jest symbolem preprocesora, a nie dyrektywy. '# if' jest dyrektywą. –