c#将struct转换为int

时间:2011-08-03 19:28:52

标签: c# struct int

考虑以下结构:

[StructLayout(LayoutKind.Sequential)]
struct CONTEXT
{
public UINT ContextFlags;
unsafe fixed byte unused[160];
public uint Ebx;
public uint Edx;
public uint Ecx;
public uint Eax;
unsafe fixed byte unused2[24];
}

以下代码:

Context ctx = new Context{ ContextFlags = 0x10007 };

现在,我想将此结构代表(ctx)转换为int。

类型
int x = (int)ctx;

上述方法不起作用,有人会想到进行此转换的正确方法吗?

谢谢,

埃文

1 个答案:

答案 0 :(得分:6)

我怀疑您打算调用使用this structure的Windows API方法。甚至可能this method。在这种情况下,.NET marshaller将为您处理此问题。

[DllImport("kernel32.dll")]
public static extern bool GetThreadContext(IntPtr thread, ref CONTEXT context);

请注意,您使用ref关键字传递结构。 marshaller将负责创建一个指向结构的非托管指针,并将其传递给被调用的方法。如果方法修改结构的数据,它还将处理指针返回结构。