Вопрос

у меня есть эта функция

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 структура, и в этом случае ваш вопрос невозможен;структура не могу быть нулевым.

Пожалуйста, предоставьте более подробную информацию.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top