Usando | con strings

15/05/2008 - 15:51 por jesusR | Informe spam
Saludos.

Requiero hacer algo como esto:
if (codigo=="0" | codigo=="5" | codigo =="6" | codigo =="7" ){
//ejecutar acciones
}

en donde los puntitos (...) indica que son muchas
comparaciones (alrededor de 17)

trate algo asi:

switch (Codigo){
case "0" | "5" | "6" | "7"
//ejecutar instrucciones
break;
}
pero el compilador me genera este error:
"El operador '|' no se puede aplicar a operandos del tipo
'string' y 'string' "


No existe alguna manera paracida a SQL en donde use algo como:

if codigo in ("1", "2", "3", )

Tengo poco tiempo con C# y no logro conseguir las instrucciones
adecuadas

Preguntas similare

Leer las respuestas

#6 srellock
15/05/2008 - 16:50 | Informe spam
Depende de como quieras que actue el programa. Me explico.

Al parecer esto es lo mismo.

Valor = 8
if ( Valor > 4) | (Valor < 0)

Valor = 8
if ( Valor > 4) || (Valor < 0)

pues no actua igual.

En el primer caso el resultado de las condiciones seria TRUE | FALSE con un
resultado total de TRUE, por lo que se cumpliria la condicion.

En el segundo caso (a mi gusto mucho mas optimo, al no ser que las
condiciones no sean comparativas sino funciones que retornan valor). Se
compararia la primera condicion con un resultado de TRUE y a partir de aqui
no miraria nada mas ya que es un O logico y poca importancia tiene si la
siguiente condicion es TRUE o FALSE.


Resumiendo utilizaremos "| &" cuando queremos que se evaluen todas las
condiciones y se retorne un resultado global, y usaremos "|| &&" cuando
queremos ganar velocidad de proceso, pero cuidado, si incluimos funciones
dentro del if puede ser que algunas se queden sin ejecutar.

Supongamos dos funciones tontas ConectarSQL y EjecutarCommando. Ambas
retornan un True o False dependiendo de si pueden o no realizar su tarea.
(No hace falta explicar que se presupone que hace cada funcion)

Si hacemos esto

if (ConectarSQL) & (EjecutarComando)
messagebox.show( "Comando ejecutado")

Es posible que tengamos un error de programacion: si ConectarSQL devuelve
false porque no se ha podido conectar a la base de datos, igualmente se
ejecutara EjecutarComando provocando una excepcion al intentar actuar sobre
una base de datos no conectada.

Lo correcto en este caso seria hacer

if (ConectarSQL) && (EjecutarComando)
messagebox.show( "Comando ejecutado")

Aqui se evalua la primera condicion, si esta retorna un false, ya no mira la
segunda.


PD. Perdon por expandirme tanto, pero me veia en la necesidad de hacerlo.








"Angel g." escribió en el mensaje
news:%
Hola,

No deberias usar || en vez de | ???


"jesusR" escribió en el mensaje
news:
Saludos.

Requiero hacer algo como esto:
if (codigo=="0" | codigo=="5" | codigo =="6" | codigo =="7" ){
//ejecutar acciones
}

en donde los puntitos (...) indica que son muchas
comparaciones (alrededor de 17)

trate algo asi:

switch (Codigo){
case "0" | "5" | "6" | "7"
//ejecutar instrucciones
break;
}
pero el compilador me genera este error:
"El operador '|' no se puede aplicar a operandos del tipo
'string' y 'string' "


No existe alguna manera paracida a SQL en donde use algo como:

if codigo in ("1", "2", "3", )

Tengo poco tiempo con C# y no logro conseguir las instrucciones
adecuadas






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida