【发布时间】:2010-11-05 15:27:25
【问题描述】:
在 C# 4.0 中,假设我有
List<HSZPAIR> myList
包含三个元素,其中 HSZPAIR 结构由以下方式定义:
[StructLayout(LayoutKind.Sequential)]
public struct HSZPAIR
{
public IntPtr hszSvc;
public IntPtr hszTopic;
}
如何为整个 myList 创建一个字节数组?在 C++ 中,您可以将结构数组转换为字节数组。我不确定如何在 C# 中做到这一点。
我在 DDEML 库中使用了一个旧的 Windows API 函数,它需要一个字节数组和数组中的元素数作为参数。如果您对更多背景感兴趣,API 功能是:
[DllImport("user32.dll", EntryPoint="DdeCreateDataHandle", CharSet=CharSet.Ansi)]
public static extern IntPtr DdeCreateDataHandle(int idInst, byte[] pSrc, int cb, int cbOff, IntPtr hszItem, int wFmt, int afCmd);
Here is it's documentation on MSDN。 pSrc 参数是 HSZPAIR 结构的字节数组。数组的大小是 cb 参数。
【问题讨论】:
-
根据developerfusion.com/article/84519/mastering-structs-in-c 的教程,我已经设法将单个结构转换为字节数组。将整个结构列表转换为字节数组是让我陷入循环的原因。
标签: c# list struct byte marshalling