首先,我尝试使用If-Then-Else statement
撰写ternary operator
它工作正常然后出于好奇我决定使用一个写相同的代码
null-coalescing operator
但它没有按预期工作。
public System.Web.Mvc.ActionResult MyAction(int? Id)
{
string MyContetnt = string.Empty;
//This line of code works perfectly
//MyContent = Id.HasValue ? Id.Value.ToString() : "Id has no value";
//This line of code dosent show "Id has no value" at all
MyContetnt = (System.Convert.ToString(Id) ?? "Id has no value").ToString();
return Content(MyContetnt);
}
如果我通过路线 Mysite / Home / MyAction / 8777 运行程序,一切都很完美,输入的Id
号码将会显示。
但如果我通过 MySite / Home / MyAction 路线运行没有任何Id
的程序,则不会发生任何事情,MyContetnt
将为空而我希望看到" Id没有价值"在屏幕上。
我错过了什么吗?
编辑:我很好奇是否可以使用??编写代码? (空合并运算符)?
答案 0 :(得分:6)
Convert.ToString()
会导致空字符串。因此,空合并运算符不会检测到空但是空字符串
您应该使用:
MyContetnt = Id.HasValue ? System.Convert.ToString(Id.Value) : "Id has no value";
答案 1 :(得分:2)
Convert.ToString()
,当对int?
采取行动时,会产生数字字符串(如果int?
有值)或空字符串(否则)。
因此,它不会产生null
,而是产生""
和"" ?? x == ""
。