C# 7.0 – Specification – Out variables
En versiones previas de C# 7.0, el uso de parámetros con out no termina de ser fluido.
Esto es así porque antes de realizar una llamada a un método con parámetros que requieren la palabra clave out, debemos declarar previamente las variables que vamos a pasar.
Es decir, deberíamos hacer algo parecido a esto:
private static void OutVariables() { int value1 = 1; int value2 = 2; int result; GetGreaterOrEqual(value1, value2, out result); Console.WriteLine($"The greater or equal value between {value1} and {value2} is {result}"); } private static void GetGreaterOrEqual(int value1, int value2, out int greaterValue) { if (value1 >= value2) { greaterValue = value1; } else { greaterValue = value2; } }
Como podemos observar en el código, result es declarada antes de utilizarla en la llamada a GetGreaterOrEqual.
La nueva característica añadida en C# 7.0 nos permite omitir la declaración previa de la variable, pudiendo no obstante, utilizarla dentro del ámbito del método en la que la declaramos.
Visto de una manera global, la declaración directa de la variable quedaría de la siguiente forma en C# 7.0:
private static void OutVariables() { int value1 = 1; int value2 = 2; GetGreaterOrEqual(value1, value2, out int result); Console.WriteLine($"The greater or equal value between {value1} and {value2} is {result}"); } private static void GetGreaterOrEqual(int value1, int value2, out int greaterValue) { if (value1 >= value2) { greaterValue = value1; } else { greaterValue = value2; } }
¡Happy Coding!