AOWS

Just another adrian’s weblog

Tipos de parámetros en C#

with 11 comments

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]

Traducción más o menos libre del artículo C# Method Parameters

Written by adrian

13 agosto, 2007 a 20:14

Publicado en Posts

Tagged with ,

11 comentarios

Subscribe to comments with RSS.

  1. Me ha parecido muy Interesante

    No-MuerTo

    28 noviembre, 2007 at 20:49

  2. saben no me late su pagina asi que chingen su madreç

    lupe

    18 febrero, 2008 at 14:58

  3. 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 at 15:01

  4. 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 at 18:40

  5. 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 at 23:03

  6. 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 at 19:15

  7. 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 at 17:32

  8. esa pagina eta muy re chimbaaaaaaaaaaaaaaaa

    camilo

    18 septiembre, 2009 at 15:36

  9. estas medio pendejo la neta

    ke te importa

    4 diciembre, 2009 at 22:41

  10. ””’.—-

    fddh

    16 noviembre, 2016 at 00:53

  11. alert(‘hola mundo’);

    fddh

    16 noviembre, 2016 at 00:56


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: