ポインタ変換 (C# プログラミング ガイド)
更新 : 2007 年 11 月
定義済みの暗黙のポインタ変換を次の表に示します。暗黙の変換は、メソッドの呼び出しや代入ステートメントなど、多くの状況で発生することがあります。
暗黙のポインタ変換
変換前 |
変換後 |
---|---|
任意のポインタ型 |
void* |
null |
任意のポインタ型 |
明示的なポインタ変換には暗黙の変換がなく、キャスト式を使用して変換を実行します。これらの変換を次に示します。
明示的なポインタ変換
変換前 |
変換後 |
---|---|
任意のポインタ型 |
他の任意のポインタ型 |
sbyte、byte、short、ushort、int、uint、long、ulong |
任意のポインタ型 |
任意のポインタ型 |
sbyte、byte、short、ushort、int、uint、long、ulong |
使用例
次の例では、int へのポインタを byte へのポインタに変換しています。このポインタは、変数のアドレスの最下位バイトを指すことに注意してください。結果を int のサイズ (4 バイト) だけ連続してインクリメントすると、変数の残りのバイトを表示できます。
// 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
*/