【发布时间】:2011-01-15 11:55:08
【问题描述】:
什么是编组,我们为什么需要它?
我很难相信我不能通过从 C# 到 C 的线路发送 int 并且必须编组它。为什么 C# 不能只发送 32 位的起始和终止信号,告诉 C 代码它已收到 int?
如果有任何关于我们为什么需要编组以及如何使用它的好的教程或网站,那就太好了。
【问题讨论】:
-
事实上,您可以只发送带有起始和终止信号的 32 位。那将是为 int 编写自己的编组。但是如何将 Dictionary
> 传递给 C 代码? -
当您说“通过网络”时,您会想到字节序。
-
true 让我们忽略 big/little Endian 或任何其他变体。
-
这是一个有点奇怪的问题。这就像是在问“为什么我们需要一个邮政系统,而我们可以简单地拥有一个系统,让邮递员提取信件,将其带到中心位置进行分拣,然后将其交付给收件人?”但是……那是邮政系统。你问为什么我们需要一个编组系统,而实际上我们可以拥有……一个编组系统。我想我错过了你问题的重点。你能澄清一下吗?
-
我认为理解这一点最好的方法是理解“方法”在汇编中是如何工作的——最后一条指令地址是如何保存在堆栈上的,参数是如何通过堆栈传递的,堆栈指针寄存器是通过该方法修改后,使用了指令指针寄存器,特别是在实现方法的不同技术中如何可能存在细微差异。实际上,理解“电线”应该可以对您的问题有所了解。
标签: c# .net unmanaged marshalling managed