2011-09-02 14 views
6

Voglio fare in modo che se il valore dei sottotitoli non è "" allora gli UL vanno prima e dopo di esso e nella variabile sL. Se Subs è la "" quindi sL ottenere il valore ""Confuso per il? operatore in C#

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

Ma non sembra funzionare.

Il mio formato è corretto?

+4

"E non sembra lavoro "è molto raramente una descrizione utile del comportamento che stai vedendo. Si prega di dare maggiori dettagli. –

risposta

11

In caso di dubbio, aggiungere più staffe:

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

Tuttavia, il codice dovrebbe funzionare bene già; quella sintassi va bene.

3

Questo dovrebbe essere lo stesso per questo:

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

Se questo è ciò che si sta puntando, quindi vorrei circondare il "<ul>" + subs + "</ul>" tra parentesi, solo per essere sicuri che il compilatore capisce quello che vuoi.

0

Se subs è "" allora sL diventa "" pure. Stai solo usando una variante stenografica di if. Quello che hai scritto è esattamente lo stesso di

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

+1 per parentesi graffe nella stessa riga :)/modifica: aspetta, questo non qualifica il tuo post. Lo farei se fosse legittimo! ;) – fjdumont

4

Susan, il codice è corretto e funziona. Ho appena provato su LinqPad. Forse la tua variabile ss è nullo e non vuota. Vi consiglio di cambiare linea per:

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

copio-pasta'd il codice e ha funzionato bene sulla mia macchina.

Forse il problema è da qualche altra parte?

Per inciso, piuttosto utilizzare string.IsNullOrEmpty oltre = ""

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

Un'altra opzione nessuno ha menzionato ancora sarebbe quella di utilizzare string.Concat invece di +, in questo modo:

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