#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
так.
Если это не так, то переменная содержит ссылку на объект, который вы используете как есть.