Está en la página 1de 22

Mtodos y parmetros

Notas generales
Uso de mtodos
Uso de parmetros
Uso de mtodos sobrecargados
Prctica Creacin y uso de mtodos

Uso de mtodos
Definicin de mtodos
Llamadas a mtodos
Uso de la instruccin return
Uso de variables locales
Devolucin de valores
Definicin de mtodos
Main es un mtodo
Para definir mtodos propios se usa la misma sintaxis
using System;

class ExampleClass
{
static void ExampleMethod( )
{
Console.WriteLine("ExampleMethod");
}
static void Main( )
{
// ...
}
}
Llamadas a mtodos
Una vez definido un mtodo, se puede:
Llamar a un mtodo desde dentro de la misma clase
Se usa el nombre del mtodo seguido de una lista de
parmetros entre parntesis
Llamar a un mtodo que est en una clase diferente
Hay que indicar al compilador cul es la clase que
contiene el mtodo que se desea llamar
El mtodo llamado se debe declarar con la palabra clave
public
Usar llamadas anidadas
Unos mtodos pueden hacer llamadas a otros, que a su
vez pueden llamar a otros mtodos, y as sucesivamente
Uso de la instruccin return
Return inmediato
Return con una instruccin condicional
static void ExampleMethod( )
{
int numBeans;
//...

Console.WriteLine("Hello");
if (numBeans < 10)
return;
Console.WriteLine("World");
}
Uso de variables locales
Variables locales
Se crean cuando comienza el mtodo
Son privadas para el mtodo
Se destruyen a la salida
Variables compartidas
Para compartir se utilizan variables de clase
Conflictos de mbito
El compilador no avisa si hay conflictos entre nombres
locales y de clase
Devolucin de valores
El mtodo se debe declarar con un tipo que no sea void
Se aade una instruccin return con una expresin
Fija el valor de retorno
Se devuelve al llamador
Los mtodos que no son void deben devolver un valor
static int DosMasDos( ) {
int a,b;
a = 2;
b = 2;
return a + b;
}
int x;
x = DosMasDos( );
Console.WriteLine(x);
Uso de parmetros
Declaracin y llamadas a parmetros
Mecanismos de paso de parmetros
Paso por valor
Paso por referencia
Parmetros de salida
Uso de listas de parmetros de longitud variable
Normas para el paso de parmetros
Uso de mtodos recursivos
Declaracin y llamadas a parmetros
Declaracin de parmetros
Se ponen entre parntesis despus del nombre del mtodo
Se definen el tipo y el nombre de cada parmetro
Llamadas a mtodos con parmetros
Un valor para cada parmetro
static void MethodWithParameters(int n, string y)
{ ... }

MethodWithParameters(2, "Hola, mundo");
Mecanismos de paso de parmetros
Tres maneras de pasar parmetros
entrada
Paso por valor
entrada
salida
Paso por referencia
salida
Parmetros de salida
Paso por valor
Mecanismo predeterminado para el paso de parmetros:
Se copia el valor del parmetro
Se puede cambiar la variable dentro del mtodo
No afecta al valor fuera del mtodo
El parmetro debe ser de un tipo igual o compatible
static void SumaUno(int x)
{
x++; // Incrementar x
}
static void Main( )
{
int k = 6;
SumaUno(k);
Console.WriteLine(k); // Muestra el valor 6, no 7
}
Paso por referencia
Qu son los parmetros referencia?
Una referencia a una posicin de memoria
Uso de parmetros referencia
Se usa la palabra clave ref en la declaracin y las
llamadas al mtodo
Los tipos y valores de variables deben coincidir
Los cambios hechos en el mtodo afectan al llamador
Hay que asignar un valor al parmetro antes de la
llamada al mtodo
Parmetros de salida
Qu son los parmetros de salida?
Pasan valores hacia fuera, pero no hacia dentro
Uso de parmetros de salida
Como ref, pero no se pasan valores al mtodo
Se usa la palabra clave out en la declaracin y las
llamadas al mtodo
static void OutDemo(out int p)
{
// ...
}
int n;
OutDemo(out n);
Uso de listas de parmetros de longitud variable
Se usa la palabra clave params
Se declara como tabla al final de la lista de parmetros
Siempre paso por valor
static long AddList(params long[ ] v)
{
long total, i;
for (i = 0, total = 0; i < v.Length; i++)
total += v[i];
return total;
}
static void Main( )
{
long x = AddList(63,21,84);
}
Normas para el paso de parmetros
Mecanismos
El paso por valor es el ms habitual
El valor de retorno del mtodo es til para un solo valor
ref y/o out son tiles para ms de un valor de retorno
ref slo se usa si los datos se pasan en ambos sentidos
Eficiencia
El paso por valor suele ser el ms eficaz
Uso de mtodos recursivos
Un mtodo puede hacer una llamada a s mismo
Directamente
Indirectamente
til para resolver ciertos problemas
Uso de mtodos sobrecargados
Declaracin de mtodos sobrecargados
Signaturas de mtodos
Uso de mtodos sobrecargados
Declaracin de mtodos sobrecargados
Mtodos que comparten un nombre en una clase
Se distinguen examinando la lista de parmetros
class OverloadingExample
{
static int Suma(int a, int b)
{
return a + b;
}
static int Suma(int a, int b, int c)
{
return a + b + c;
}
static void Main( )
{
Console.WriteLine(Suma(1,2) + Suma(1,2,3));
}
}
Signaturas de mtodos
Las signaturas de mtodos deben ser nicas dentro
de una clase
Definicin de signatura
Nombre del mtodo
Tipo de parmetro
Modificador
Forman la definicin
de la signatura
Nombre de parmetro
Tipo de retorno de
mtodo
No afectan a la
signatura
Uso de mtodos sobrecargados
Conviene usar mtodos sobrecargados si:
Hay mtodos similares que requieren parmetros
diferentes
Se quiere aadir funcionalidad al cdigo existente
No hay que abusar, ya que:
Son difciles de depurar
Son difciles de mantener
Prctica - Creacin y uso de mtodos

También podría gustarte