Tipos de parámetros en C#
Parámetros Valor
Es el caso más habitual, un método acepta parámetros y devuelve un único valor. Los parámetros se conocen como parámetros valor, pues cuando se llama al método se envía una copia de su valor. Cualquier cambio que sufra el parámetro dentro del método no afectará al valor original.
Ejemplo:
[csharp]
static void Main(string[] args)
{
int original = 100;
mostrarDoble(original);
Console.WriteLine(“Original: {0}”, original);
}
static void mostrarDoble(int valorAMostrar)
{
valorAMostrar *=2;
Console.WriteLine(“Doble: {0}”, valorAMostrar);
}
/* SALIDA
Doble: 200
Original: 100
*/
[/csharp]
Como vemos, el parámetro valorAMostrar sufre una modificación dentro del método pero ello no afecta a la variable original, pues es una copia de ésta última.
Parámetros de salida
A pesar de que el caso anterior es el más común, hay ciertas ocasiones en las que es útil (o incluso necesario) devolver más de un valor desde un método. En este caso, un valor puede ser devuelto usando el comando normal return y los valores adicionales usando los parámetros de salida.
Un parámetro de salida se declara usando la palabra clave out antes del tipo y el nombre de dicho parámetro. Para devolver un valor usando este parámetro, simplemente se le debe asignar un valor, que será accesible desde el código que llama al método. La palabra clave out también debe incluirse en la llamada al método.
Ejemplo:
[csharp]
static void Main(string[] args)
{
int area;
int perimetro;
area = CalculaRectangulo(5, 10, out perimetro);
Console.WriteLine(“Area: {0}”, area);
Console.WriteLine(“Perimetro: {0}”, perimetro);
}
static int CalculaRectangulo(int ancho, int altura, out int perimetro)
{
perimetro = (ancho * 2) + (altura * 2);
return ancho * altura;
}
/* SALIDA
Area: 50
Perimetro: 30
*/
[/csharp]
Parámetros por referencia
Cuando se pasa un objeto basado en alguna clase como parámetro, se hace por referencia. Esto significa que cualquier cambio en alguna propiedad del objeto dentro del método se reflejará también fuera de dicho método. Esto se debe a que ambos objetos son en realidad el mismo, o más bien sus punteros apuntan al mismo área de memoria.
Es posible emular este comportamiento en tipos valor declarando el parámetro como parámetro referencia. Se hace, de forma semejante a los parámetros de salida, con la palabra clave ref.
Ejemplo:
[csharp]
static void Main(string[] args)
{
int original = 100;
mostrarDoble(ref original);
Console.WriteLine(“Original: {0}”, original);
}
static void mostrarDoble(ref int valorAMostrar)
{
valorAMostrar *=2;
Console.WriteLine(“Doble: {0}”, valorAMostrar);
}
/* SALIDA
Doble: 200
Original: 200
*/
[/csharp]
Parámetros array
El último tipo de parámetros de los métodos es el parámetro array. Este tipo debe ser el último en la definición del método, e indica que la función acepta cualquier número de parámetros del tipo establecido. Cada valor se combina en un array estándar que puede ser procesado dentro del método.
De nuevo, se hace necesario el uso de una palabra clave, en esta ocasión params. Se declara como un array unidimensional añadiendo un par de corchetes al tipo del parámetro en la definición del método.
Ejemplo:
[csharp]
static void Main(string[] args)
{
mostrarPuntuacion(“Pepe”, 15);
mostrarPuntuacion(“Juan”, 10, 12, 15, 25);
mostrarPuntuacion(“Jose”);
}
static void mostrarPuntuacion(string jugador, params int[] puntuaciones)
{
Console.WriteLine(“Jugador: {0}”, jugador);
foreach (int puntuacion in puntuaciones)
Console.Write(“{0}\t”, puntuacion);
Console.WriteLine(“\n”);
}
/* SALIDA
Jugador: Pepe
15
Jugador: Juan
10 12 15 25
Jugador: Jose
*/
[/csharp]



Me ha parecido muy Interesante
No-MuerTo
28 Noviembre, 2007 a 20:49
saben no me late su pagina asi que chingen su madreç
lupe
18 Febrero, 2008 a 14:58
hola grasias a este medio les quisiera dar una obserbacion que en esta`pagina e encontrado una baridad de buena informacion i solo queda desir que les aria falta actualisarla un poco mas
bueno me despido grasias por la atencion bye
carlos
18 Febrero, 2008 a 15:01
Justo lo que buscaba, muy sintetizado y sencillo.
¿Pero no hay otra forma de enviar parametros por referencia sin usar la palabra “ref”?.
Gracias
Agustin
4 Junio, 2008 a 18:40
esoo es una mierdaaa!!
no dice nah de lo ke buscoo plastas de mierdaaa!!
cierren la pag…xke ta bn malaaa!!
elineth barbera
4 Octubre, 2008 a 23:03
Gracias amigo esto es muy muy util para mi, lo siento por los malagradecidos que no aprecian tu aportación desinteresada tu sigue adelante.
Luis I.Mtz.
27 Febrero, 2009 a 19:15
Pienso que está muy bueno este resumen, para poder entender lo básico de Tipos de parámetros. A mi en lo particular me resultó muy bueno.
Susy
30 Marzo, 2009 a 17:32
esa pagina eta muy re chimbaaaaaaaaaaaaaaaa
camilo
18 Septiembre, 2009 a 15:36
estas medio pendejo la neta
ke te importa
4 Diciembre, 2009 a 22:41