Как проверить, имеют ли десериализованные члены класса значение?

#c# #deserialization

#c# #десериализация

Вопрос:

У меня есть начальный фрагмент, в котором десериализованы параметры, проверяется значение и обрабатывается ошибка:

 var param = js.Deserialize<int?>(jqData.Params);


if (param.HasValue)
{
     resp.ReturnValue = param.Value;
}
else
{
     //handle error code
}
  

Теперь, во время моей модификации, я изменил метод, чтобы принимать список параметров класса вместо целых чисел с нулевым значением

 var param = js.Deserialize<ClassName>(jqData.Params);
  

Теперь это становится недействительным.Имеет методы value и .Value .

Мой вопрос: как мне правильно изменить эти две строки, чтобы они имели то же значение, что и начальный оператор if?

До сих пор я думал только о переходе на if (param != null) , но я не могу придумать надлежащего эквивалента .Value .

Комментарии:

1. Если ClassName это класс — его значение находится в param . Быть ссылочным типом означает, что null это одно из возможных значений, естественно.

2. @zerkms Вы имеете в виду, что весь оператор if становится ненужным?

3. Ну, param содержит ссылку на объект. Если это так != null , то это определенно относится к объекту.

4. @zerkms Подождите, тогда весь оператор if else не нужен?

5. Вы десериализуетесь до nullable int в первом операторе и до className во втором. className не имеет свойств (я предполагаю), называемых HasValue и Value, поскольку они являются собственными для nullable int .

Ответ №1:

Как только ClassName это класс (см. — Ссылочный тип), вам просто нужно проверить, если это не null так.

Если это не так, то переменная содержит ссылку на объект, который вы используете как есть.