对此感到困惑? c#中的运算符

时间:2011-09-02 11:35:06

标签: c#

我想这样做,如果subs的值不是“”那么UL在它之前和之后进入变量sL。如果subs是“”,那么sL得到值“”

var sL = (subs != "") ? "<ul>" + subs + "</ul>" : "";

但它似乎不起作用。

我的格式是否正确?

6 个答案:

答案 0 :(得分:11)

如有疑问,请添加更多括号:

var sL = subs != "" ? ("<ul>" + subs + "</ul>") : "";

但是,您的代码应该可以正常工作;语法很好。

答案 1 :(得分:4)

苏珊,你的代码是正确的,它的确有效。我刚刚在LinqPad中测试过。 也许你的ss变量是null而不是空的。我建议你改行:

var sL = !string.IsNullOrEmply(subs) ? "<ul>" + subs + "</ul>" : "";

答案 2 :(得分:3)

这应该与此相同:

if (subs != "")
{
    sL = "<ul>" + subs + "</ul>";
}
else
{
    sL = "";
}

如果这是你的目标,那么我会在括号中包围"<ul>" + subs + "</ul>",只是为了确保编译器能够理解你想要的东西。

答案 3 :(得分:2)

我复制了你的代码,它在我的机器上工作正常。

也许问题出在其他地方?

除此之外,请使用string.IsNullOrEmpty而不是= ""

var sL = !string.IsNullOrEmpty(subs) ? "<ul>" + subs + "</ul>" : string.Empty;

答案 4 :(得分:1)

有人提到的另一个选择是使用string.Concat代替+,如下所示:

var sL = (subs != "") ? string.Concat("<ul>", subs, "</ul>") : "";

答案 5 :(得分:0)

如果subs是“”,则sL也变为“”。您只是使用if的简写变体。你所写的内容与

完全相同
string sL;
if (subs != ""){
  sL = "<ul>" + subs + "</ul>";
}else{
  sL = "";
}