为什么我不能在这个三元运算中将int转换为字符串

时间:2011-03-25 01:35:52

标签: c#

我为了简洁而留下了一些代码......

int id = Convert.ToInt32(Page.RouteData.Values["id"]);
var q = db.Categories.SingleOrDefault(x => x.categoryID == id);

ddlCategory.SelectedValue = q.parentID == 0 ? 0 : id.ToString();

我收到错误:

无法确定条件表达式的类型,因为'int'和'string'之间没有隐式转换(它正在讨论id.ToString()篇。)

我尝试了Convert.ToString(),我尝试将(string)放在id的前面,但这不起作用。

2 个答案:

答案 0 :(得分:11)

因为三元的两个返回值不是同一类型 - 一个是int而另一个是string。编译器无法推断出三元表达式的返回类型是什么。

解决方案:从两个分支返回相同的类型,或将其中一个转换为另一个分支的基础。 object会很好。

答案 1 :(得分:5)

因为您正在尝试使三元运算符求值为int(0)或字符串(id.ToString())。将0替换为"0"