การใช้พอยน์เตอร์ใน C# จำเป็นต้องมีตัวแก้ไขที่ไม่ปลอดภัย นอกจากนี้ยังสามารถเข้าถึงองค์ประกอบอาร์เรย์ได้โดยใช้พอยน์เตอร์โดยใช้คีย์เวิร์ดคงที่ เนื่องจากชนิดข้อมูลอาร์เรย์และตัวชี้ไม่เหมือนกัน ตัวอย่างเช่น:ชนิดข้อมูล int[] ไม่เหมือนกับ int*.
โปรแกรมที่สาธิตการเข้าถึงองค์ประกอบอาร์เรย์โดยใช้พอยน์เตอร์มีดังต่อไปนี้
ตัวอย่าง
using System; namespace PointerDemo { class Example { public unsafe static void Main() { int[] array = {55, 23, 90, 76, 9, 57, 18, 89, 23, 5}; int n = array.Length; fixed(int *ptr = array) for ( int i = 0; i < n; i++) { Console.WriteLine("array[{0}] = {1}", i, *(ptr + i)); } } } }
ผลลัพธ์
ผลลัพธ์ของโปรแกรมข้างต้นมีดังนี้
array[0] = 55 array[1] = 23 array[2] = 90 array[3] = 76 array[4] = 9 array[5] = 57 array[6] = 18 array[7] = 89 array[8] = 23 array[9] = 5
ตอนนี้ให้เราเข้าใจโปรแกรมข้างต้น
อาร์เรย์ประกอบด้วย 10 ค่าประเภท int ตัวชี้ ptr ชี้ไปที่จุดเริ่มต้นของอาร์เรย์โดยใช้คีย์เวิร์ดคงที่ จากนั้นค่าอาร์เรย์ทั้งหมดจะแสดงโดยใช้ for loop ข้อมูลโค้ดสำหรับสิ่งนี้จะได้รับดังนี้ −
int[] array = {55, 23, 90, 76, 9, 57, 18, 89, 23, 5}; int n = array.Length; fixed(int *ptr = array) for ( int i = 0; i < n; i++) { Console.WriteLine("array[{0}] = {1}", i, *(ptr + i)); }