مشكلة في التحويل الضمني وغنى
-
18-09-2019 - |
سؤال
لدي هذه الوظيفة
public static implicit operator MyClass(string v) { return new MyClass(v); }
واكتب var.myclass = null ؛. يستدعي هذا المشغل الضمني ويمرر NULL كسلسلة، مما يؤدي إلى الفوضى في التعليمات البرمجية (أستخدم الانعكاس) ولا ترغب في إضافة حالة خاصة). كيف يمكنني كتابة MyClass = NULL دون التسبب في المشغل الضمني؟
حاولت الكتابة
public static implicit operator MyClass(string v) { return v == null ? null : new MyClass(v); }
ولكن هذا يسبب stackoverflow
المحلول
أعتقد أن مشكلتك هي أن كلا الجانبين من المشغل القصير يجب أن يكون من نفس الأنواع أو المتوافقة.
حاول الكتابة
if (v == null)
return null;
else
return new MyClass(v);
تعديل: لا أستطيع فقط إعادة إنتاج مشكلتك إذا قمت بذلك MyClass
بنية، في هذه الحالة سؤالك مستحيل؛ بنية لا تستطيع كن فارغا.
يرجى تقديم المزيد من التفاصيل.
لا تنتمي إلى StackOverflow