请原谅可怜的措辞,但我找不到更好的解释方法。
根据我的理解,C#是一种WORA语言 - 你可以在一台机器上编写它并将它部署到另一台机器上,因为在实际运行应用程序之前不会编译MSIL。
那么为什么BitConverter.IsLittleEndian
被定义为like so:
#if BIGENDIAN
public static readonly bool IsLittleEndian /* = false*/;
#else
public static readonly bool IsLittleEndian = true;
#endif
BIGENDIAN
这里是一个预处理程序指令,这意味着它在编译时被解析。因此,如果开发人员的计算机是小端,并且目标使用大端, IsLittleEndian
仍会在目标计算机上报告true
吗?
答案 0 :(得分:3)
不,它会按预期工作。它工作的原因是因为目标系统上安装的.NET运行时是为该目标系统构建/编译的,因此它的BitConverter.IsLittleEndian
属性将返回false
。您的代码只是引用该属性,因此直到运行时才会确定。