Entschuldigen Sie die schlechte Formulierung, aber ich konnte keinen besseren Weg finden, es zu erklären.Warum ist BIGENDIAN eine Direktive, wenn sie nicht zur Kompilierzeit aufgelöst wird?
Aus meiner Sicht ist C# eine WORA-Sprache - Sie können es auf einem Computer schreiben und auf einem anderen bereitstellen, da der MSIL erst kompiliert wird, wenn die Anwendung ausgeführt wird.
Also warum ist es dann, dass BitConverter.IsLittleEndian
like so definiert:
#if BIGENDIAN
public static readonly bool IsLittleEndian /* = false*/;
#else
public static readonly bool IsLittleEndian = true;
#endif
BIGENDIAN
hier ist eine Präprozessordirektive, was bedeutet, dass es zum Zeitpunkt der Kompilierung aufgelöst wird. Wenn also die Maschine des Entwicklers Little Endian ist und das Ziel Big Endian verwendet, meldet weiterhin true
auf dem Zielcomputer?
'BIGENDIAN' ist ein Präprozessorsymbol, keine Direktive. '# if' ist die Richtlinie. –