سؤال

أنا ألعب مع PEX وواحدة من المعلمات التي تنتقل إلى طريقتي هي "\0".

ماذا يعني ذالك؟ تخميني سلسلة فارغة ("") بناءً على محتوى طريقتي. ومع ذلك ، إذا كان الأمر هو نفسه فلماذا لا تستخدم فقط "" بدلاً من "\0"?

أحد يعرف ما هو عليه؟

هل كانت مفيدة؟

المحلول

" 0" هو "شخصية فارغة". يتم استخدامه لإنهاء السلاسل في C وبعض أجزاء من C ++. تقوم PEX بإجراء اختبار لمعرفة كيفية تعامل الكود الخاص بك مع الحرف الفارغ ، على الأرجح يبحث عن سم بايت لاغية استغلال الأمن.

معظم C# رمز ليس لديه ما يخشاه ؛ إذا قمت بتمرير السلسلة إلى الكود غير المدير ، فقد تواجه مشاكل.

تعديل:

فقط لكي تكون صريحًا ... PEX تمر سلسلة تحتوي على حرف فارغ. هذا هو ليس مرجع فارغ.

نصائح أخرى

إنها سلسلة تحتوي على الحرف " 0". لا يعامل C# هذا بأي طريقة خاصة بشكل خاص - إنه مجرد حرف Unicode U+0000. إذا كتبت:

int firstCodePoint = text[0];

ثم ستجد firstCodePoint هو 0.

إنها سلسلة ذات حرف فارغ. تستخدم مكتبات السلسلة الأقدم - مثل تلك المستخدمة في C أو Order C ++ Libraries - حرف " 0" للإشارة إلى نهاية السلسلة.

تستخدم البيئات الأحدث مثل .NET نظامًا مختلفًا ، ولكن هناك الكثير من التاريخ حول إنهاء سلسلة مع " 0" ، بحيث تكون نقطة خطأ شائعة. سيستخدمها اختبار المكتبات مثل PEX للتأكد من أن البرنامج يعالجها بشكل صحيح.

سلسلة من الطول 1 ، تحتوي على الحرف u0000 (ويعرف أيضًا باسم NUL). لا يتم التعامل مع هذه الشخصية بشكل خاص.

في C ، الذي يستخدم 0 لإنهاء السلسلة ، يمكنك أيضًا تخصيص سلسلة من الطول 1. في هذه الحالة ، ستقوم وظائف السلسلة القياسية بالإبلاغ عن طول 0 ، نظرًا لأن السلسلة تحتوي على 0 بالإضافة إلى إنهاءها. يمكنك تعديل STR [0] بأمان ، أو strncat حرف واحد فيه.

Escape Sequence  
\0    
Character Name 
Null    
Unicode Encoding     
0x0000

انظر هذا الرابط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top