سؤال

لقد لاحظت أنه يمكنك القيام بهذا النوع من الأشياء في C#:

XNamespace c = "http://s.opencalais.com/1/pred/";

لاحظ أن قيمة السلسلة يتم تحويلها ضمنيًا إلى نوع مختلف. هل هناك أماكن أخرى يمكن القيام بذلك؟ ما هي بعض الأنماط والممارسات الشائعة حول هذا النوع من الأشياء؟

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

المحلول

يمكن أن يحدث هذا كلما عامل تحويل ضمني ويعرف. الكل في الكل نادر جدا.

نصائح أخرى

هذا يجب أن يساعدhttp://msdn.microsoft.com/en-us/library/z5z9kes2.aspx

تحرير: مات نينجا :)

والمثير للدهشة ، في المرة الأولى التي رأيت فيها هذا كان على مقال ويكيبيديا حول مشغلات التحويل C# ، لم أر أبدًا أي شخص يستخدم هذا من قبل. يبدو أنه سيؤذي قابلية القراءة ويخلط بين الكثير من المطورين ...

في الأساس ، توفر XNamesPace مشغل يقوم بتحويل ضمني.

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

مثال على الحالة التي ترغب في استخدام مشغل تحويل صريح بدلاً من واحدة ضمنية ، ستكون فئة عدد صحيح تسمح بالتحويل من نوع النقطة العائمة ؛ من شأن التحويل الضمني إخفاء الاقتطاع/التقريب الذي يجب أن يحدث وبالتالي يمكن أن يجعل المستخدم مرتبكًا جدًا (وربما يكون مصدر الأخطاء.)

في الكود الخاص بي ، استخدمته عدة مرات ، على سبيل المثال في هيكل نتيجة التحقق من الصحة البسيطة للغاية والذي يوفر تحويلًا ضمنيًا إلى Bool (ولكن ليس من). هذا سمح لي أن أفعل if (result) { ... } (لا تزال هيئة المحلفين خارج عن فائدة هذا على الرغم من :)).

تخمين معظم استخدامه هو لأنواع البيانات "البسيطة" ، مثل الأعداد الصحيحة الكبيرة ، العشرية ، وكذلك.

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