在structc中使用半字节# 我们能像C++那样使用C语言结构中的小写吗? C#中是否有等效代码
谢谢。您可以使用在structc中使用半字节# 我们能像C++那样使用C语言结构中的小写吗? C#中是否有等效代码,c#,c++,struct,C#,C++,Struct,谢谢。您可以使用[StructLayout(LayoutKind.Explicit)]和字段偏移量属性获得相同的结果。你可以阅读更多关于它的信息 但请注意,FieldOffset以字节单位工作,而不是位 [StructLayout(LayoutKind.Explicit)] struct X { #if A [FieldOffset(0)] public byte a; [FieldOffset(1)] public byte b; #else [FieldOffset(
[StructLayout(LayoutKind.Explicit)]
和字段偏移量
属性获得相同的结果。你可以阅读更多关于它的信息
但请注意,FieldOffset
以字节单位工作,而不是位
[StructLayout(LayoutKind.Explicit)]
struct X
{
#if A
[FieldOffset(0)] public byte a;
[FieldOffset(1)] public byte b;
#else
[FieldOffset(0)] public byte b;
[FieldOffset(1)] public byte a;
#endif
}
例如:
unsafe
{
short x = 12300;
X* y = (X*)&x;
X t = *y;
Console.WriteLine(t.a + " - " + t.b);
}
如果您使用未定义的A运行该代码,您将得到结果48-12
,但如果您#定义了一个
,则您将得到结果12-48
可能的重复
unsafe
{
short x = 12300;
X* y = (X*)&x;
X t = *y;
Console.WriteLine(t.a + " - " + t.b);
}