我目前正在将一些本机代码移植到C#,它包含各种结构,委托,枚举和外部方法调用。
结构中的某些字段希望将某些常量应用于它们。在结构中列出常量似乎是合乎逻辑的,而不是在一个单独的位置,因为这应该保持一切有条理,但我不确定这将在编组/与本机调用的互操作性期间对结构产生什么影响。
比如说我的结构定义如下:
[StructLayout(LayoutKind.Sequential)]
public struct NATIVE_STRUCTURE
{
public int Value;
}
此实例中的值可能需要以下常量之一
VALUE1 = 0x0001;
VALUE2 = 0x0002;
因此,我可以安全地编写这些结构:
[StructLayout(LayoutKind.Sequential)]
public struct NATIVE_STRUCTURE
{
public int Value;
public const int VALUE1 = 0x0001;
public const int VALUE2 = 0x0002;
}
任何人都可以了解这在运行时如何影响代码(如果有的话)。感谢。
答案 0 :(得分:2)
最好使用枚举。像这样:
[StructLayout(LayoutKind.Sequential)]
public struct NATIVE_STRUCTURE
{
public NativeFoo FooValue;
}
public enum NativeFoo
{
VALUE1 = 0x0001,
VALUE2 = 0x0002,
}