TryParse
имеет очевидное преимущество в том, что в случае сбоя он возвращает ложь вместо выдачи исключения.
Стандартный шаблон будет выглядеть примерно так:
int value;
if (int.TryParse(Request.QueryString["Id"], out value))
{
// Use value
}
else
{
// Do whatever you want on failure
}
ТеперьТакже стоит помнить, что вы можете указать int.TryParse
, IFormatProvider
и NumberStyles
- например, вы можете указать CultureInfo.InvariantCulture
в качестве IFormatProvider
, если это действительно означает, что это автосгенерированный идентификатор (а не тот, который введен пользователем).
Если вы хотите эффективно иметь «значения по умолчанию», вы можете написать вспомогательный метод, подобный этому:
public static int? NullableTryParseInt32(string text)
{
int value;
return int.TryParse(text, out value) ? value : (int?) null;
}
Затем вы можетеиспользуйте это так:
int value = NullableTryParseInt32(text) ?? 10;
Или вы можете просто написать метод, который принимает значение по умолчанию, конечно:)