ネイティブコードから同じ値を含むenum
マネージコードに(C ++ / CLIで)キャストする正しい方法は何ですか?たとえばC++/ CLIのようにC#のキャスト方法を使用することとの違いはありますか?enum
enum
(int)
23318 次
2 に答える
42
ネイティブコードが
enum shape_type_e
{
stUNHANDLED = 0, //!< Unhandled shape data.
stPOINT = 1 //!< Point data.
...
};
マネージコードは
public enum class ShapeType
{
Unhandled = 0,
Point = 1,
...
};
ネイティブからマネージドにキャストできます
shape_type_e nativeST = stPOINT;
ShapeType managedST = static_cast<ShapeType>(nativeST);
Debug.Assert(managedST == ShapeType::Point);
私は常にstatic_cast
、C#のキャスト方法ではなくを使用します。
于 2009-12-10T04:54:26.007 に答える
1
場合によります。たとえば、基になるタイプがushortであるCLI列挙型がある場合、257の値を保持することはできません。デフォルトでは、CLI列挙型はintに基づいており、ほとんどの場合は問題ありません。ネイティブC++コードが列挙型の基になる型としてunsigned32bitints / 64bit intsを使用している場合は、CLI列挙型のベースをUInt32(longまたはulong)に切り替えます。
于 2009-12-09T22:47:01.263 に答える