IIf en C#

12/06/2008 - 18:41 por JSMD | Informe spam
existe en C#?.. o hay alguna otra funcion?

Preguntas similare

Leer las respuestas

#1 RFOG
12/06/2008 - 18:53 | Informe spam
En 12/06/2008 18:41:00, JSMD escribió:

existe en C#?.. o hay alguna otra funcion?



Sí, pero se llama operador condicional o ternario (porque sólo hay uno), y
como viene de C++ es un tanto abstruso.

string s=(p==true?"Cierto":"Falso");

<condicional>?<devuelve_esto_si_cierto>:<devuelve_esto_si_falso>;

http://msdn.microsoft.com/es-es/library/ty67wk28(VS.80).aspx

Microsoft Visual C++ MVP
==Mi blog sobre programación: http://geeks.ms/blogs/rfog
Momentos Leves: http://momentosleves.blogspot.com/
Cosas mías: http://rfog.blogsome.com/
Libros, ciencia ficción y programación
El lenguaje es el vestido de los pensamientos.
Respuesta Responder a este mensaje
#2 Lluis Franco
13/06/2008 - 09:40 | Informe spam
Sí, pero se llama operador condicional o ternario (porque sólo hay uno), y
como viene de C++ es un tanto abstruso.



Aparte de lo mencionado por Rafa, una de las novedades de Visual Basic 2008
es que por fin disponemos de un operador ternario al igual que en C# (aunque
en lugar de operador, en realidad es una función):

Dim s = If(Value >= 0, "Positive", "Negative")

Ya no tendremos que usar esa porquería de IIf heredado que siempre devuelve
un tipo object.

Así que el agüelo Guille estará contento!
:-)

Lluís Franco i Montanyés
[MS-MVP-MCP Visual Basic]
NUG: http://andorradotnet.com
Web: http://sps.uyssoft.com
Blog: http://msmvps.com/blogs/lfranco
Geeks: http://geeks.ms/blogs/lfranco
(Guía de netiquette de los foros)
http://sps.uyssoft.com/Foros%20onli...uette.aspx
FIMARGE, S.A.
Principat d'Andorra

Tel.: +376 805 100
Fax: +376 824 500
Mi Perfil MVP en:
https://mvp.support.microsoft.com/profile/Lluis
This posting is provided "AS IS" with no warranties, and confers no rights.
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho.
Respuesta Responder a este mensaje
#3 RFOG
13/06/2008 - 09:47 | Informe spam
En 13/06/2008 09:40:44, Lluis Franco escribió:

Sí, pero se llama operador condicional o ternario (porque sólo hay
uno), y como viene de C++ es un tanto abstruso.



Aparte de lo mencionado por Rafa, una de las novedades de Visual Basic
2008 es que por fin disponemos de un operador ternario al igual que en
C# (aunque en lugar de operador, en realidad es una función):

Dim s = If(Value >= 0, "Positive", "Negative")

Ya no tendremos que usar esa porquería de IIf heredado que siempre
devuelve un tipo object.

Así que el agüelo Guille estará contento!
:-)



Uissssss, dentro de poco os veo terminando las líneas con puntos y
comas... ji ji.


Microsoft Visual C++ MVP
==Mi blog sobre programación: http://geeks.ms/blogs/rfog
Momentos Leves: http://momentosleves.blogspot.com/
Cosas mías: http://rfog.blogsome.com/
Libros, ciencia ficción y programación
El lenguaje es el vestido de los pensamientos.
Respuesta Responder a este mensaje
#4 Lluis Franco
13/06/2008 - 13:44 | Informe spam
:-)
Ejem!!!
Sepa vd. caballero que YO siempre he sido más partidario de los finales con
punto y coma y de vivir la vida entre llaves...

grrrr,

Lluís Franco i Montanyés
[MS-MVP-MCP Visual Basic]
NUG: http://andorradotnet.com
Web: http://sps.uyssoft.com
Blog: http://msmvps.com/blogs/lfranco
Geeks: http://geeks.ms/blogs/lfranco
(Guía de netiquette de los foros)
http://sps.uyssoft.com/Foros%20onli...uette.aspx
FIMARGE, S.A.
Principat d'Andorra

Tel.: +376 805 100
Fax: +376 824 500
Mi Perfil MVP en:
https://mvp.support.microsoft.com/profile/Lluis
This posting is provided "AS IS" with no warranties, and confers no rights.
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho.
Respuesta Responder a este mensaje
#5 Fernando Gómez
13/06/2008 - 17:49 | Informe spam
RFOG wrote:
En 12/06/2008 18:41:00, JSMD escribió:

existe en C#?.. o hay alguna otra funcion?



Sí, pero se llama operador condicional o ternario (porque sólo hay uno),
y como viene de C++ es un tanto abstruso.

string s=(p==true?"Cierto":"Falso");

<condicional>?<devuelve_esto_si_cierto>:<devuelve_esto_si_falso>;

http://msdn.microsoft.com/es-es/library/ty67wk28(VS.80).aspx



Mmm... y ya que estamos en estas, comentar que existe el operador ?? en
C#, que devuelve un valor si la condición es nula.

string s = null;
foo(s ?? string.Empty);

que sería equivalente a

foo(s != null ? s : string.Empty);

En el ejemplo anterior, dado que s es nulo, devuelve string.Empty.
Devolvería la propia s si ésta no fuese nula.

con respecto a IIf de VB, si no mal recuerdo uno de los problemas que
tiene es que no hay evaluación en corto circuito, por lo que si alguno
de los parámetros es nulo lanza excepción. El nuevo If de VB hace una
evaluación en corto circuito (o la emula, más bien).

Saludos.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida