2011-09-02 84 views
6

我想这样做,以便如果subs的值不是“”,那么UL会在它之前和之后进入变量sL。如果subs是“”,那么sL得到值“”困惑?运算符在c#

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

但它似乎并不奏效。

我的格式正确吗?

+4

“这似乎并没有工作“对于你所看到的行为很少有用的描述。请提供更多细节。 –

回答

11

有疑问时,添加更多的括号:

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

然而,你的代码应该正常工作了;该语法很好。

3

这应该是相同的,以这样的:

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

如果这是你的目标是什么,然后我会环绕在括号中的"<ul>" + subs + "</ul>",只是要确定,编译器理解你想要什么。

0

如果subs是“”,那么sL也变成“”。你只是使用if的简写变体。你写的和

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

对于大括号在同一行+1)/编辑:等等,这不符合您的帖子。如果它是合法的,我会的! ;) – fjdumont

4

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

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

我copy-pasta'd你的代码,它在我的机器上工作得很好。

也许问题出在别的地方?

顺便说一句,而使用string.IsNullOrEmpty= ""

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

另一种选择谁也没有提到尚未将使用string.Concat,而不是+,像这样:

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