مقدمة
تمثل المؤشرات أحد العناصر الرئيسية في لغة البرمجة C#، حيث تمكن المطورين من القيام بعمليات متقدمة على الذاكرة والمتغيرات. في هذا المقال، سنستكشف بعض العمليات والعناصر المتقدمة للمؤشرات في C# وكيفية استخدامها بشكل فعّال.
عامل العنوان &
في C#، يُستخدم عامل العنوان &
للحصول على عنوان متغير. على سبيل المثال:
unsafe{
int number = 27;
int* pointerToNumber = &number;
Console.WriteLine($"قيمة المتغير: {number}");
Console.WriteLine($"عنوان المتغير: {(long)pointerToNumber:X}");
}
يعتبر استخدام عامل العنوان في العمليات غير الآمنة، ويجب تجنبه إلا إذا كانت السياق يتيح استخدام الكود غير الآمن.
عامل الفك (Pointer Indirection) *
يستخدم عامل الفك للحصول على القيمة المخزنة في المتغير الذي يشير إليه المؤشر. على سبيل المثال:
unsafe{
char letter = 'A';
char* pointerToLetter = &letter;
Console.WriteLine($"قيمة المتغير `letter`: {letter}");
Console.WriteLine($"عنوان المتغير `letter`: {(long)pointerToLetter:X}");
*pointerToLetter = 'Z';
Console.WriteLine($"قيمة المتغير `letter` بعد التحديث: {letter}");
}
عامل الوصول للعضو (Member Access) ->
يجمع عامل الوصول للعضو بين عمليتي الفك والوصول لعنصر من الهيكل (Struct)، حيث يكون مماثلًا لتعبير (*x).y
. على سبيل المثال:
public struct Coords{
public int X;
public int Y;
}
public class PointerMemberAccessExample{
public static unsafe void Main() {
Coords coords;
Coords* p = &coords;
p->X = 3;
p->Y = 4;
Console.WriteLine(p->ToString()); // الناتج: (3, 4)
}
}
عامل الوصول للعنصر (Element Access) []
يتيح عامل الوصول للعنصر الوصول إلى عناصر مصفوفة باستخدام مؤشر، حيث يُقدم مثال التالي كيفية استخدامه:
unsafe{
char* pointerToChars = stackalloc char[123];
for (int i = 65; i < 123; i++) {
pointerToChars[i] = (char)i;
}
Console.Write("الحروف الكبيرة: ");
for (int i = 65; i < 91; i++) {
Console.Write(pointerToChars[i]);
}
}
يرجى ملاحظة أن عامل الوصول للعنصر لا يتحقق من أخطاء خارج الحدود.
عمليات الحساب على المؤشرات
يمكن أداء مجموعة من العمليات الحسابية على المؤشرات مثل جمع أو طرح قيمة صحيحة من المؤشر، وطرح مؤشرين، وزيادة أو نقصان المؤشر. يُرجى العلم أن بعض العمليات تتطلب أن يكون السياق آمنًا.
استخدام هذه العناصر بشكل فعّال يعزز قدرتك على البرمجة بلغة C# بشكل أفضل. قم بتطبيق هذه الفهم العميق في مشاريعك لتحسين أدائك وفعاليتك كمطور.
ملاحظة: يجب أن يتم التحقق من السياق الآمن لأي عملية تتعامل مع المؤشرات، وتجنب استخدام هذه العمليات في حالات غير آمنة.