Проблема с неявным преобразованием и нулем
-
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); }
Но это вызывает переполнение стека
Решение
Я считаю, что ваша проблема в том, что обе стороны тернарного оператора должны иметь одинаковые или совместимые типы.
Попробуйте написать
if (v == null)
return null;
else
return new MyClass(v);
РЕДАКТИРОВАТЬ:Я смогу воспроизвести вашу проблему только в том случае, если сделаю MyClass
структура, и в этом случае ваш вопрос невозможен;структура не могу быть нулевым.
Пожалуйста, предоставьте более подробную информацию.
Не связан с StackOverflow