2011-09-02 19 views
6

Quiero hacerlo de modo que si el valor de los subs no es "", entonces los UL van antes y después de él y dentro de la variable sL. Si subs es "", entonces sL obtener el valor ""Confundido sobre el? operador en C#

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

Pero no parece funcionar.

¿Mi formato es correcto?

+4

"No parece trabajo "rara vez es una descripción útil del comportamiento que estás viendo. Por favor da más detalles. –

Respuesta

11

En caso de duda, añadir más soportes:

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

Sin embargo, el código debería funcionar bien ya; esa sintaxis está bien.

3

Esto debe ser igual a este:

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

Si esto es lo que se está buscando, entonces rodearía la "<ul>" + subs + "</ul>" entre corchetes, sólo para estar seguro de que el compilador entiende lo que quiere.

0

Si los subs son "" entonces sL pasa a ser "" también. Usted solo está usando una variante abreviada de if. Lo que ha escrito es exactamente lo mismo que

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

+1 para llaves en la misma línea :)/editar: Espera, esto no califica tu publicación. ¡Lo haría si fuera de fiar! ;) – fjdumont

4

Susan, su código es correcto y funciona. Acabo de probar en LinqPad. Quizás su variable ss sea nula y no esté vacía. Te recomiendo que cambies tu línea a:

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

Copié mi código y funcionó bien en mi máquina.

¿Quizás el problema está en otro lado?

Como acotación al margen, en lugar utilizar string.IsNullOrEmpty sobre = ""

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

Otra opción aún nadie mencionó sería utilizar string.Concat en lugar de +, así:

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