Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# StructLayout.Auto与sequential和Explicit相比意味着什么?_C#_Pinvoke - Fatal编程技术网

C# StructLayout.Auto与sequential和Explicit相比意味着什么?

C# StructLayout.Auto与sequential和Explicit相比意味着什么?,c#,pinvoke,C#,Pinvoke,我认为LayoutKind.Sequential和LayoutKind.Explicit是清楚的,但是LayoutKind.Auto是如何由C#处理的呢 问题似乎很清楚: 运行时会自动为该应用程序选择适当的布局 非托管内存中对象的成员。使用此函数定义的对象 枚举成员不能在托管代码之外公开。 尝试这样做会生成异常 换句话说,布局是动态的,这意味着您的对象不能再在托管代码之外使用。问题似乎很清楚: 运行时会自动为该应用程序选择适当的布局 非托管内存中对象的成员。使用此函数定义的对象 枚举成员不能在托

我认为LayoutKind.Sequential和LayoutKind.Explicit是清楚的,但是LayoutKind.Auto是如何由C#处理的呢

问题似乎很清楚:

运行时会自动为该应用程序选择适当的布局 非托管内存中对象的成员。使用此函数定义的对象 枚举成员不能在托管代码之外公开。 尝试这样做会生成异常

换句话说,布局是动态的,这意味着您的对象不能再在托管代码之外使用。

问题似乎很清楚:

运行时会自动为该应用程序选择适当的布局 非托管内存中对象的成员。使用此函数定义的对象 枚举成员不能在托管代码之外公开。 尝试这样做会生成异常

换句话说,布局是动态的,这意味着您的对象不能再在托管代码之外使用。

MS说

默认情况下,公共语言运行库使用自动布局值。到 减少与自动值C#相关的布局问题, VisualBasic和C++编译器指定值的顺序布局 类型

她说

默认情况下,公共语言运行库使用自动布局值。到 减少与自动值C#相关的布局问题, VisualBasic和C++编译器指定值的顺序布局 类型


LayoutKind.Auto
的意思是,“我授予CLR权限,可以对这些字段对应的字节重新排序”。它确切地决定了如何为内存使用、打包等重新组织字段文档中没有具体说明它将进行哪些更改,可能是因为它是一个与如何编写结构无关的实现细节


如果要传递给非托管代码,这总是一件坏事,因为非托管代码希望这些字段按特定顺序排列。他们可能的重新安排注定会产生意想不到的后果。这就是为什么不能将
LayoutKind.Auto
结构公开给非托管代码的原因。

LayoutKind.Auto
的意思是,“我授予CLR对这些字段对应的字节重新排序的权限”。它确切地决定了如何为内存使用、打包等重新组织字段文档中没有具体说明它将进行哪些更改,可能是因为它是一个与如何编写结构无关的实现细节


如果要传递给非托管代码,这总是一件坏事,因为非托管代码希望这些字段按特定顺序排列。他们可能的重新安排注定会产生意想不到的后果。这就是为什么你不能将
LayoutKind.Auto
结构暴露给非托管代码。

你不明白的是什么?@Oded文档没有指定
Auto
如何工作的内部工作机制,我认为这就是OP的目的。“我认为这个克斯托因不值得被否决。”约翰菲涅拉-这个问题被否决是因为它不清楚。OP没有说明他不懂的东西-你的猜测和任何猜测一样好。你不懂的是什么?@Oded文档没有说明
Auto
的内部工作原理,我认为这就是OP的目的。“我认为这个克斯托因不值得被否决。”约翰菲涅拉-这个问题被否决是因为它不清楚。OP没有具体说明他不理解的东西-你的猜测和任何猜测一样好。