我们什么时候应该使用这个属性,为什么我们需要它?例如,如果 c 中的 native 函数将指向 unsigned char 的指针作为参数,并且我知道需要它来完成 unsigned char 数组,为什么我不能在 C# 中使用字节数组来使用此函数?有必要编码吗?
最佳答案
在大多数情况下,运行时将能够自动确定如何在 native 代码和托管代码之间编码数据,因此您通常不需要指定该属性。 MarshalAs
仅在定义中存在歧义(并且您想准确地告诉运行时如何编码数据)或您需要非默认行为时才需要。
根据我的经验,MarshalAs
只有在处理字符串时才是真正需要的,因为在 native 代码中有很多不同的表示形式; unicode/ansi,是否使用 C 字符串,等等。
关于c# - MarshalAs 属性案例研究,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6366850/