3

現在、ネイティブ コードを 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;
}

これが実行時にコードにどのように影響するかについて、誰でも光を当てることができますか(もしあれば)。ありがとう。

4

1 に答える 1

2

列挙型を使用することをお勧めします。このようなもの:

[StructLayout(LayoutKind.Sequential)]
public struct NATIVE_STRUCTURE
{
    public NativeFoo FooValue;
}

public enum NativeFoo
{
   VALUE1 = 0x0001,
   VALUE2 = 0x0002,
}
于 2012-10-10T10:50:39.780 に答える