不好意思的措词,但是我找不到更好的方法来解释它。

根据我的理解,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吗?

最佳答案

不,它将按预期工作。之所以起作用,是因为安装在目标系统上的.NET运行时是为该目标系统构建/编译的,因此BitConverter.IsLittleEndian属性将返回false。您的代码仅引用该属性,因此直到运行时才确定。

关于c# - 如果BIGENDIAN在编译时未解决,为什么将其作为指令?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32746556/

10-09 22:45