¿Hay un operador or
en C#?C# 'o' operador?
que quiero hacer:
if (ActionsLogWriter.Close or ErrorDumpWriter.Close == true)
{
// Do stuff here
}
pero no estoy seguro de cómo podría hacer algo así.
¿Hay un operador or
en C#?C# 'o' operador?
que quiero hacer:
if (ActionsLogWriter.Close or ErrorDumpWriter.Close == true)
{
// Do stuff here
}
pero no estoy seguro de cómo podría hacer algo así.
C# admite dos operadores booleanos or
: la única barra |
y la barra doble ||
.
La diferencia es que |
siempre comprueba las condiciones izquierda y derecha, mientras que ||
solo comprueba la condición del lado derecho si es necesario (si el lado izquierdo es falso).
Esto es significativo cuando la condición en el lado derecho implica el procesamiento o resulta en efectos secundarios. (Por ejemplo, si su método ErrorDumpWriter.Close
tardó un tiempo en completarse o cambió el estado de algo.)
Debe decir: || solo verifica la condición del lado derecho si el lado izquierdo se evalúa como falso ¿Desde VERDADERO O CUALQUIER COSA siempre es VERDADERO? – ParmesanCodice
Simplemente una cosa menor: por supuesto hay más operadores booleanos que eso, tal vez reformule a "dos operadores OR booleanos/lógicos". – sharkin
Muy bien, tengo hasta -2 para escribir mientras tengo sueño. :) –
if (ActionsLogWriter.Close || ErrorDumpWriter.Close == true)
{ // Do stuff here
}
al igual que en C y C++, el operador booleano O es ||
if (ActionsLogWriter.Close || ErrorDumpWriter.Close == true)
{
// Do stuff here
}
O es ||
en C#.
Puede echar un vistazo a this.
También vale la pena mencionar que, en C#, el operador O está en cortocircuito. En su ejemplo, Cerca parece ser una propiedad, pero si se tratara de un método, vale la pena señalar que:
if (ActionsLogWriter.Close() || ErrorDumpWriter.Close())
es fundamentalmente diferente de
if (ErrorDumpWriter.Close() || ActionsLogWriter.Close())
En C#, si la primera expresión devuelve verdadero , la segunda expresión no se evaluará en absoluto. Solo ten en cuenta esto. Realmente funciona a su favor la mayor parte del tiempo.
El operador "|" evaluará ambos lados de la expresión.
if (ActionsLogWriter.Close | ErrorDumpWriter.Close == true)
{
// Do stuff here
}
La doble operador "||" sólo se evaluará el lado izquierdo si la expresión devuelve cierto.
if (ActionsLogWriter.Close || ErrorDumpWriter.Close == true)
{
// Do stuff here
}
C# tiene muchas similitudes con C++ pero su todavía son las diferencias entre las dos lenguas;)
Para que quede claro "o" es un operador y no una afirmación. – JoshJordan
@lndebi: Sus preguntas revelan una comprensión sorprendentemente desigual de C#. Considere revisar algunos tutoriales para equilibrarse antes de marcar a los administradores de paquetes y cualquier otra cosa en la que esté trabajando. msdn.microsoft.com/en-us/library/... es un lugar para comenzar. –
Sin mencionar que, para empezar, tienes una declaración extraña. ¿Por qué solo eres explícito acerca de que la 2ª condición sea verdadera e implícita con la primera? – mpen