مؤشر أنواع (C# برمجة الدليل)
في غير آمن سياق، قد يكون نوعا من نوع مؤشر، نوع القيمة، أو اكتب مرجع. إعلان نوع مؤشر يأخذ واحد النماذج التالية:
type* identifier;
void* identifier; //allowed but not recommended
أي من الأنواع التالية قد يكون نوع مؤشر:
sbyte, بايت, قصير, ushort, int, uint, long, ulong, حرف, حُر, مزدوج, عشري, أو bool.
أيenumنوع.
أي مؤشر نوع.
أي نوع بنية المعرفة من قبل مستخدم الذي يحتوي على حقول أنواع غير المدارة فقط.
مؤشر لا يورث أنواع من كائن وتحويلات لا توجد بين مؤشر أنواع و object. أيضا، لا تدعم تحويل إلى كائن و تحويل إلى نوع القيمة المؤشرات. ومع ذلك، يمكنك تحويل بين مختلف مؤشر أنواع وبين مؤشر أنواع والأنواع المتكاملة.
عندما تقوم بتعريف المؤشرات المتعددة في نفس تصريح، * هو كتابتها مع نوع المصدر فقط، وليس كبادئة لكل اسم المؤشر. فعلى سبيل المثال:
int* p1, p2, p3; // Ok
int *p1, *p2, *p3; // Invalid in C#
لا يمكن الإشارة إلى مؤشر مرجع أو بنية يحتوي على مراجع تساوت البيانات المهملة التي تم تجميعها حتى إذا كان مؤشر مرجع كائن هو الإشارة إليها. النشرة المصورة العمومية عدم التمكن من مقطع صوتي ما إذا كان الكائن هو التي يتم المشار إليه بأي أنواع المؤشرات.
القيمة متغير مؤشر من نوع myType*هو العنوان متغير من نوع myType. ما يلي عبارة عن أمثلة ل مؤشر كتابة تصريحات:
المثال |
الوصف |
---|---|
int* p |
p هو مؤشر لعدد صحيح |
int** p |
p هو مؤشر لمؤشر إلى عدد صحيح |
int*[] p |
p هو الصفائف الأبعاد مفردة من المؤشرات إلى إعداد صحيحة |
char* p |
p هو مؤشرا لحرف |
void* p |
p مؤشر إلى نوع غير معروف |
مؤشر عامل indirection * يمكن استخدامه للوصول إلى المحتويات الموجودة في الموقع المشار إليه مؤشر المتغير. على سبيل المثال، لاحظ التعريف التالي:
int* myVariable;
تعبير *myVariableيشير إلى intمتغير العثور على العنوان الموجودة في myVariable.
لا يمكنك يطبق operaإلىr indirection إلى مرجع من نوع void*. على الرغم من ذلك، يمكنك استخدام فريق العمل لتحويل قيمة فارغة مؤشر إلى أي نوع مؤشر آخر، والعكس بالعكس.
يمكن أن يكون مؤشر null. تطبيق operaإلىr indirection إلى المؤشر الفارغ يسبب سلوك "المعرفة من قبل تطبيق.
يجب أن تدرك أن تمرير مؤشرات بين وظائف يمكن أن تسبب سلوك غير معرّف. يتم إرجاع أمثلة مؤشر إلى متغير محلي من خلال بالخارج أو Ref المعلمة أو كنتيجة دالة. إذا تم تعيين المؤشر في حظر ثابتة، المتغير إلى الذي يشير قد لا حلها.
يسرد الجدول التالي عوامل تشغيل والعبارات التي يمكن أن يعمل تشغيل المؤشرات في سياق غير آمنة:
عامل تشغيل/كشف |
استخدم الأمرين |
---|---|
* |
ينفذ indirection المؤشر. |
-> |
Accesses a عضو of a بنية through a مؤشر. |
[] |
تمت الفهرسة a مؤشر. |
& |
Obtains the العنوان of a متغير. |
++ و -- |
Increments و decrements pointers. |
+ و - |
Performs مؤشر arithmetic. |
==, !=, <, >, <=, و >= |
Compares pointers. |
stackalloc |
Allocates ذاكرة تشغيل the مكدس. |
fixed كشف |
Temporarily fixes a متغير so that its العنوان may be found. |
مواصفات لغة #C
لمزيد من المعلومات، راجع مواصفات لغة #C. مواصفات اللغة هي المصدر النهائي لبناء جملة C# واستخدامها.
راجع أيضًا:
المرجع
التعليمات البرمجية الغير آمنة والمؤشرات (دليل البرمجة لـ #C)
تحويلات المؤشرات (دليل البرمجة لـ #C)
تعبيرات المؤشر ( ارشادات البرمجة C# )
التحويل إلى كائن والتحويل إلى نوع القيمة (دليل البرمجة لـ C#)