Проблема с неявным преобразованием и нулем - PullRequest
5 голосов
/ 06 января 2010

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

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); }

Но это вызывает переполнение стека

1 Ответ

5 голосов
/ 06 января 2010

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

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

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

РЕДАКТИРОВАТЬ : Я могу воспроизвести вашу проблему, только если сделаю MyClass структуру, и в этом случае ваш вопрос невозможен; структура не может быть нулевой.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...