2013-09-08 3 views
0

Когда я пытаюсь выполнить этот код, я получаю эту ошибку.Неявное преобразование между int и строкой

// Код:

int Value = Convert.ToInt32(Request.QueryString["Value"] == null ? 0 : Request.QueryString["Value"]); 

Поэтому мне нужно передать значение '0', если значение QueryString равно нулю.

Как я могу это решить?

ответ

4

Вы можете передать строку "0", но лучше было бы:

int Value = Request.QueryString["Value"] == null ? 0 : Convert.ToInt32(Request.QueryString["Value"]); 

и вы могли бы также вынесем на поиск:

string str = Request.QueryString["Value"]; 
int value = str == null ? 0 : Convert.ToInt32(str); 
5
int Value = Convert.ToInt32(Request.QueryString["Value"] ?? "0"); 
1

Попробуйте

int Value = Convert.ToInt32(Request.QueryString["Value"] == null ? "0" : Request.QueryString["Value"]); 

Или преимущество ?? оператора

int Value = Convert.ToInt32(Request.QueryString["Value"] ?? "0"); 

Ваше ложное и истинное утверждение в троичной оператора должны быть одного типа или должны быть неявно преобразованы в другой ,

Либо тип выражения first_expression и second_expression должен быть одинаковым, либо неявное преобразование должно существовать от одного типа к другому.

Взятые из msdn

0

Try это:

int i; 
int.TryParse(Request.QueryString["Value"], out i); 

если синтаксический анализ завершится неудачно i будет иметь значение по умолчанию (0) без явного назначения и проверки, если строка запроса равна нулю.

+0

Если строка не является допустимым числом, но также не 'null', то я думаю, что бросание исключения намного лучше, чем возвращение' 0'. – svick

+0

@svick «Так что мне нужно передать значение« 0 », если значение QueryString равно null». – wudzik

Смежные вопросы