int和string之间没有隐式转换

时间:2013-09-08 19:57:16

标签: c# .net implicit-conversion

当我尝试执行此belo代码时,我收到了该错误。

//代码:

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

如果QueryString值为空,我需要传递值'0'。

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分: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);

答案 2 :(得分: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

答案 3 :(得分:0)

试试这个:

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

如果解析失败,i将具有默认值(0)而没有显式赋值,并检查查询字符串是否为空。