指標轉換 (C# 程式設計手冊)
下表顯示預先定義的隱含指標轉換。 隱含轉換可能發生在許多狀況,包括方法叫用和指派陳述式。
隱含指標轉換
From |
若要 |
---|---|
任何指標型別 |
void* |
null |
任何指標型別 |
明確指標轉換是指當沒有隱含轉換時,使用 cast 運算式來執行轉換。 下表顯示這些轉換。
明確指標轉換
From |
若要 |
---|---|
任何指標型別 |
其他任何指標型別 |
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
*/