2009-03-16 14 views
1

ソケットを使用したコール録音APIを使用しようとしています。私たちはAPIのドキュメントを持っていますが、サンプルはすべてC++で書かれています。VB.NETまたはC#と同等のC++ ULONG定義ですか?

VB.NETまたはC#で次のように宣言しますか?ドキュメントから

#define SIF_GENERAL 0x08000000 
#define SIF_CONFIGURATION 0x08010000 
#define SIF_ARCHIVE 0x08020000 
#define SIF_SEARCH 0x08030000 
#define SIF_REPLAY 0x08040000 
#define SIF_STATISTICS 0x08050000 
#define SIF_ENGINEER 0x08060000 

注:メッセージIDは、符号なしの32ビット値(ULONG)です。

答えて

4

VB.NET

Module Constants 
    Public Const SIF_GENERAL as Integer =&H08000000 
    Public Const SIF_CONFIGURATION As Integer = &H08010000 
    Public Const SIF_ARCHIVE As Integer = &H08020000 
    Public Const SIF_SEARCH As Integer = &H08030000 
    Public Const SIF_REPLAY As Integer = &H08040000 
    Public Const SIF_STATISTICS As Integer = &h08050000 
    Public Const SIF_ENGINEER As Integer = &h08060000 

End Module 

C#

public static class Constants { 
    public const int SIF_GENERAL =0x08000000; 
    public const int SIF_CONFIGURATION = 0x08010000; 
    public const int SIF_ARCHIVE = 0x08020000; 
    public const int SIF_SEARCH = 0x08030000; 
    public const int SIF_REPLAY = 0x08040000; 
    public const int SIF_STATISTICS = 0x08050000; 
    public const int SIF_ENGINEER = 0x08060000; 
} 
2

C++ ULONG 32ビット符号なし整数型です。この場合、定数は符号なしにする必要はありません。したがって、C#ではintを、VB.NETではIntegerを使用してください。

VB.NET

Public Const SIF_GENERAL as Integer = &H08000000 

C#

public const int SIF_GENERAL = 0x08000000; 

データサイズがあなたのAPI呼び出しのために不正確になりますので、64ビット長のデータ型を使用しないでください。

2

あなたが値を使用して、列挙型で、より.NETtyを見えるようにすることができます:

//C# 
public enum SIF : uint 
{ 
    SIF_GENERAL = 0x08000000, 
    SIF_CONFIGURATION = 0x08010000, 
    SIF_ARCHIVE = 0x08020000, 
    SIF_SEARCH = 0x08030000, 
    SIF_REPLAY = 0x08040000, 
    SIF_STATISTICS = 0x08050000, 
    SIF_ENGINEER = 0x08060000, 
} 

または

'VB.NET 
Public Enum SIF As UInt32 
    SIF_GENERAL = &H08000000 
    SIF_CONFIGURATION = &H08010000 
    SIF_ARCHIVE = &H08020000 
    SIF_SEARCH = &H08030000 
    SIF_REPLAY = &H08040000 
    SIF_STATISTICS = &H08050000 
    SIF_ENGINEER = &H08060000 
End Enum 

、あなたがそれらを渡す場合を除いて(列挙型の見つけやすさと種類の安全性を得るこの方法をインターフェースを介して、それらをキャストする必要があります)。

名前を変更することで.NETの外観を向上させることもできます。たとえば、SIF.GIFFIFITIONはSIF.Generalになる可能性があります。

1

あなたは> = 0x8000000定数を持っている場合は、あなたがこのようにそれらを定義することができます。

class Test 
{ 
    public const int AllBits = unchecked((int)0xFFFFFFFF); 
    public const int HighBit = unchecked((int)0x80000000); 
} 

See this MSDN article on unchecked

関連する問題