ポインター変換 (C# プログラミング ガイド)Pointer Conversions (C# Programming Guide)

定義済みの暗黙的なポインター変換を次の表に示します。The following table shows the predefined implicit pointer conversions. 暗黙的な変換は、メソッドの呼び出しや代入ステートメントなど、多くの状況で発生することがあります。Implicit conversions might occur in many situations, including method invoking and assignment statements.

暗黙的なポインター変換Implicit pointer conversions

FromFrom 終了To
任意のポインター型Any pointer type void*void*
nullnull 任意のポインター型Any pointer type

明示的なポインター変換は、暗黙的な変換がない場合に、キャスト式を使用して、変換を実行するために使用します。Explicit pointer conversion is used to perform conversions, for which there is no implicit conversion, by using a cast expression. 次の表はこの変換についてまとめたものです。The following table shows these conversions.

明示的なポインター変換Explicit pointer conversions

FromFrom 終了To
任意のポインター型Any pointer type その他のポインター型Any other pointer type
sbyte、byte、short、ushort、int、uint、long または ulongsbyte, byte, short, ushort, int, uint, long, or ulong 任意のポインター型Any pointer type
任意のポインター型Any pointer type sbyte、byte、short、ushort、int、uint、long または ulongsbyte, byte, short, ushort, int, uint, long, or ulong

Example

次の例では、int へのポインターは byte へのポインターに変換されます。In the following example, a pointer to int is converted to a pointer to byte. ポインターは、変数の最下位バイト アドレスを指すことに注意してください。Notice that the pointer points to the lowest addressed byte of the variable. int のサイズ (4 バイト) まで結果を連続してインクリメントする場合、変数の残りのバイトを表示することができます。When you successively increment the result, up to the size of int (4 bytes), you can display the remaining bytes of the variable.

// compile with: -unsafe
class ClassConvert
{
    static void Main()
    {
        int number = 1024;

        unsafe
        {
            // Convert to byte:
            byte* p = (byte*)&number;

            System.Console.Write("The 4 bytes of the integer:");

            // Display the 4 bytes of the int variable:
            for (int i = 0 ; i < sizeof(int) ; ++i)
            {
                System.Console.Write(" {0:X2}", *p);
                // Increment the pointer:
                p++;
            }
            System.Console.WriteLine();
            System.Console.WriteLine("The value of the integer: {0}", number);

            // Keep the console window open in debug mode.
            System.Console.WriteLine("Press any key to exit.");
            System.Console.ReadKey();
        }
    }
}
    /* Output:
        The 4 bytes of the integer: 00 04 00 00
        The value of the integer: 1024
    */

関連項目See also