Проблема с неявным преобразованием и пустым указателем

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

public static implicit operator MyClass(string v) { return new MyClass(v); }

и запишите var.myclass = пустой указатель;. это называет неявный оператор и передает пустой указатель как строку, которая вызывает опустошение в моем коде (я использую отражение и не хотел бы добавлять особый случай). Как я могу записать myclass = пустой указатель, не вызывая неявный оператор?

Я пытался писать

public static implicit operator MyClass(string v) { return  v == null ? null : new MyClass(v); }

Но это вызывает stackoverflow

5
задан 6 January 2010 в 01:27
поделиться

1 ответ

Я считаю, что ваша проблема заключается в том, что обе стороны тернарного оператора должны быть одного и того же или совместимого типа.

Попробуйте написать

if (v == null)
    return null;
else
    return new MyClass(v);

EDIT : Я могу воспроизвести вашу проблему только в том случае, если я сделаю MyClass структурой, в этом случае ваш вопрос невозможен; структура не может быть нулевой.

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

5
ответ дан 14 December 2019 в 19:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: