usar unario solo sharp relacionales operadores operador logicos ejemplos como asignacion c# operators short-circuiting

c# - unario - operadores relacionales c sharp



Hace c#?? operador de corto circuito? (3)

Cuando se utiliza el ?? operador en C #, ¿está en cortocircuito si el valor que se está probando no es nulo?

Ejemplo:

string test = null; string test2 = test ?? "Default"; string test3 = test2 ?? test.ToLower();

¿Tiene éxito la línea test3 o lanza una excepción de referencia nula?

Así que otra forma de formular la pregunta: ¿Será la expresión de la mano derecha de? ¿Se evalúa al operador si la mano izquierda no es nula?


Sí, lo dice en la Especificación de lenguaje C # (resaltado por mí):

Una expresión nula coalescente de la forma a ?? b a ?? b requiere que sea de tipo anulable o tipo de referencia. Si a no es nulo, el resultado de a ?? b a ?? b es a De lo contrario, el resultado es b . La operación evalúa b solo si a es nulo.


Sí, se cortocircuita.

class Program { public static void Main() { string s = null; string s2 = "Hi"; Console.WriteLine(s2 ?? s.ToString()); } }

El programa anterior genera "Hola" en lugar de lanzar una NullReferenceException .


Sí.

public Form1() { string string1 = "test" ?? test(); MessageBox.Show(string1); } private string test() { MessageBox.Show("does not short circuit"); return "test"; }

Si no fuera un cortocircuito, se llamaría a test () y un cuadro de mensaje mostraría que "no cortocircuita".