Jam*_* Ko 5 .net c# directive endianness c-preprocessor
请原谅可怜的措辞,但我找不到更好的解释方法.
根据我的理解,C#是一种WORA语言 - 您可以在一台机器上编写它并将其部署在另一台机器上,因为在实际运行应用程序之前不会编译MSIL.
那么为什么这样BitConverter.IsLittleEndian
定义如下:
#if BIGENDIAN
public static readonly bool IsLittleEndian /* = false*/;
#else
public static readonly bool IsLittleEndian = true;
#endif
Run Code Online (Sandbox Code Playgroud)
BIGENDIAN
这是一个预处理程序指令,这意味着它在编译时解析.因此,如果开发人员的机器是小端和目标使用大端,将IsLittleEndian
仍然报告true
在目标机器上?
不,它会按预期工作。它起作用的原因是因为安装在目标系统上的 .NET 运行时是为该目标系统构建/编译的,因此它的BitConverter.IsLittleEndian
属性将返回 .NET 运行时false
。您的代码只是引用该属性,因此直到运行时才确定它。
归档时间: |
|
查看次数: |
140 次 |
最近记录: |