2011-09-02 97 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>") : "";