سؤال

لدي هذه الوظيفة

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 بنية، في هذه الحالة سؤالك مستحيل؛ بنية لا تستطيع كن فارغا.

يرجى تقديم المزيد من التفاصيل.

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