Неважно, он генерирует точно такой же код . (int?)null
переводится компилятором C # в new Nullable<int>()
. Вы можете убедиться в этом сами, написав небольшую тестовую программу и взглянув на нее с помощью ildasm.exe
Так что «лучше» - это просто стиль, который вы предпочитаете. Последовательное использование int? будет моим личным предпочтением.
Одно практическое замечание: в типичном сеансе отладки вам может быть интересно узнать, возвращается ли значение null. Тем более что данные, которые вы читаете, не дают того, что вы ожидаете. Это станет очень легко, если вы напишите нуль-возвращающий оператор в отдельной строке:
int i;
if (Int32.TryParse(Request["id"], out i)) return i;
else return null; // <== set breakpoint here.
Избавиться от актеров тоже. И выдает точно такой же код