Parámetros en C# - Parámetros Exteriores

Un tercer tipo de parámetros parecido al anterior, es aquél que viene precedido por la palabra clave out. En este caso, permitimos que sea el método de destino el que realice la primera asignación a la variable.

Supongamos que necesitamos una función que divida en dos una palabra y devuelva los dos trozos resultantes. Pues bien, entonces haríamos lo que muestra en el siguiente código:

using System;

class Parametros {

static void Main () {

string izquierda, derecha;

string cadena = “Me van a cortar por la mitad”;

Console.WriteLine (”Cadena original = ‘{0}’”, cadena);

Divide (cadena, out izquierda, out derecha);

Console.WriteLine (”Primera parte = ‘{0}’”, izquierda);

Console.WriteLine (”Segunda parte = ‘{0}’”, derecha);

}

static void Divide (string cadena, out string izquierda, out string derecha) { izquierda = cadena.Substring (O, cadena.Length / 2);derecha = cadena.Substring (cadena.Length / 2);

}

}

Al ejecutarlo, daría el siguiente resultado por pantalla:  Cadena original = ‘Me van a cortar por la mitad’Primera parte = ‘Me van a corta’

Segunda parte = ‘r por la mitad’

El programa hace uso del método Substring, miembro de System.String que nos permite extraer fácilmente subconjun­tos de cadenas de texto. Como vemos, pese a que las cadenas izquierda y derecha no estaban inicializadas, el compilador no ha puesto ningún problema a que fuera el método Divide O el que realizará dicha asig­nación.

Si en lugar de out, hubiéramos emplea­do ref, habríamos obtenido el siguiente error de compilación: 

Divide.cs(10) error CS0165: Use of unassigned local variable ‘izquierda’ Divide .cs (13) error CS0165: Use of unassigned local variable ‘derecha’ Compilation f ailed: 2 error (s ) , O warnings

Leave a Reply