请见谅措辞不佳,但我找不到更好的方式来解释它。
据我所知,C#是一种WORA语言——您可以在一台机器上编写它,并在另一台机器上部署它,因为MSIL直到实际运行应用程序时才被编译。
那么为什么BitConverter.IsLittleEndian
被定义为这样:
#if BIGENDIAN
public static readonly bool IsLittleEndian /* = false*/;
#else
public static readonly bool IsLittleEndian = true;
#endif
BIGENDIAN
这里是一个预处理指令,意味着它在编译时被解析。如果开发者的机器是小端字节序,而目标机器使用大端字节序,那么IsLittleEndian
在目标机器上是否仍然会报告true
?
BIGENDIAN
是一个预处理器符号,而不是指令。#if
是指令。 - Ben Voigt