HOW TO:使用指標存取陣列元素 (C# 程式設計手冊)
在 unsafe 內容中,您可以使用指標項目存取方式來存取記憶體內的某個項目,如下列範例所示:
char* charPointer = stackalloc char[123];
for (int i = 65; i < 123; i++)
{
charPointer[i] = (char)i; //access array elements
}
方括號內的運算式必須可隱含轉換為 int、uint、long 或 ulong。 p[e] 運算相當於 *(p+e)。 指標項目存取功能也與 C 和 C++ 一樣,都無法檢查超出範圍的錯誤。
範例
在下面的範例中,會將 123 個記憶體位置配置到字元陣列 charPointer 中。 這個陣列會用來顯示兩個 for 迴圈中的小寫字母和大寫字母。
請注意,charPointer[i] 運算式相當於 *(charPointer + i) 運算式,使用這兩個運算式的任何一個都會得到相同的結果。
// compile with: /unsafe
class Pointers
{
unsafe static void Main()
{
char* charPointer = stackalloc char[123];
for (int i = 65; i < 123; i++)
{
charPointer[i] = (char)i;
}
// Print uppercase letters:
System.Console.WriteLine("Uppercase letters:");
for (int i = 65; i < 91; i++)
{
System.Console.Write(charPointer[i]);
}
System.Console.WriteLine();
// Print lowercase letters:
System.Console.WriteLine("Lowercase letters:");
for (int i = 97; i < 123; i++)
{
System.Console.Write(charPointer[i]);
}
}
}