MĂŠtodos y parĂĄmetros
N otas gener ales
U so de métodos
U so de par ámetr os
U so de métodos sobr ecar gados
Pr áctica – Cr eación y uso de métodos
U so de métodos
D efinición de métodos
L lamadas a métodos
U so de la instr ucción r etur n
U so de var iables locales
D evolución de valor es
D efinición de métodos
M ain es un método
Para definir métodos propios se usa la misma sintaxis
using System; using System; class ExampleClass class ExampleClass { { static void ExampleMethod( ) static void ExampleMethod( ) { { Console.WriteLine("ExampleMethod"); Console.WriteLine("ExampleMethod"); } } static void Main( ) static void Main( ) { { // ... // ... } } }}
L lamadas a métodos
U na vez definido un método, se puede:
Llamar a un método desde dentro de la misma clase Se usa el nombre del método seguido de una lista de parámetros entre paréntesis
Llamar a un método que está en una clase diferente Hay que indicar al compilador cuál es la clase que contiene el método que se desea llamar El método llamado se debe declarar con la palabra clave public
Usar llamadas anidadas Unos métodos pueden hacer llamadas a otros, que a su vez pueden llamar a otros métodos, y así sucesivamente
U so de la instr ucción r etur n
Retur n inmediato
Retur n con una instr ucción condicional static void ExampleMethod( ) static void ExampleMethod( ) {{ int numBeans; int numBeans; //... //... Console.WriteLine("Hello"); Console.WriteLine("Hello"); if (numBeans < 10) if (numBeans < 10) return; return; Console.WriteLine("World"); Console.WriteLine("World"); }}
U so de var iables locales
Var iables locales
Se crean cuando comienza el método
Son privadas para el método
Se destruyen a la salida
Var iables compar tidas
Para compartir se utilizan variables de clase
Conflictos de ámbito
El compilador no avisa si hay conflictos entre nombres locales y de clase
D evolución de valor es
El método se debe declar ar con un tipo que no sea void
Se añade una instr ucción r etur n con una expr esión
Fija el valor de retorno
Se devuelve al llamador
static int DosMasDos( ) { L os métodos que no static int DosMasDos( ) { int a,b; int a,b; devolver un valor a = 2; a = 2; b = 2; b = 2; return a + b; return a + b; }}
int x; int x; son void deben x = DosMasDos( );
x = DosMasDos( ); Console.WriteLine(x); Console.WriteLine(x);
U so de par ámetr os
D eclar ación y llamadas a par ámetr os
M ecanismos de paso de par ámetr os
Paso por valor
Paso por r efer encia
Par ámetr os de salida
U so de listas de par ámetr os de longitud var iable
N or mas par a el paso de par ámetr os
U so de métodos r ecur sivos
D eclar ación y llamadas a par ámetr os
D eclar ación de par ámetr os
Se ponen entre paréntesis después del nombre del método
Se definen el tipo y el nombre de cada parámetro
L lamadas a métodos con par ámetr os
Un valor para cada parámetro
static void MethodWithParameters(int n, string y) static void MethodWithParameters(int n, string y) { ... } { ... } MethodWithParameters(2, "Hola, mundo"); MethodWithParameters(2, "Hola, mundo");
M ecanismos de paso de par ámetr os
T r es maner as de pasar par ámetr os
entr Paso por por valor valor entrada adaPaso entr entrada adaPaso Paso por por referencia referencia salida salida salida Parámetrosde desalida salida salida Parámetros
Paso por valor
M ecanismo pr edeter minado par a el paso de par ámetr os:
Se copia el valor del parámetro
Se puede cambiar la variable dentro del método
No afecta al valor fuera del método
El parámetro debe ser de un tipo igual static void SumaUno(int x) static void SumaUno(int x) {{ compatible x++; // Incrementar x x++; // Incrementar x }} static void Main( ) static void Main( ) {{ int k = 6; int k = 6; SumaUno(k); SumaUno(k);
}}
o
Console.WriteLine(k); // Muestra el valor 6, no 7 Console.WriteLine(k); // Muestra el valor 6, no 7
Paso por r efer encia
¿Qué son los par ámetr os r efer encia?
Una referencia a una posición de memoria
U so de par ámetr os r efer encia
Se usa la palabra clave r ef en la declaración y las llamadas al método
Los tipos y valores de variables deben coincidir
Los cambios hechos en el método afectan al llamador
Hay que asignar un valor al parámetro antes de la llamada al método
Par ámetr os de salida
¿Qué son los par ámetr os de salida?
Pasan valores hacia fuera, pero no hacia dentro
U so de par ámetr os de salida
Como r ef, pero no se pasan valores al método
Se usa la palabra clave out en la declaración y las llamadas al método
static void OutDemo(out int p) static void OutDemo(out int p) {{ // ... // ... }} int n; int n; OutDemo(out n); OutDemo(out n);
U so de listas de par ámetr os de longitud var iable
Se usa la palabr a clave par ams
Se declar a como tabla al final de la lista de par ámetr os
Siempr e paso por valor
static long AddList(params long[ ] v) static long AddList(params long[ ] v) {{ long total, i; long total, i; for (i = 0, total = 0; i < v.Length; i++) for (i = 0, total = 0; i < v.Length; i++) total += v[i]; total += v[i]; return total; return total; }} static void Main( ) static void Main( ) {{ long x = AddList(63,21,84); long x = AddList(63,21,84); }}
N or mas par a el paso de par ámetr os
M ecanismos
El paso por valor es el más habitual
El valor de retorno del método es útil para un solo valor
r ef y/ o out son útiles para más de un valor de retorno
r ef sólo se usa si los datos se pasan en ambos sentidos
Eficiencia
El paso por valor suele ser el más eficaz
U so de métodos r ecur sivos
U n método puede hacer una llamada a sí mismo
Directamente
Indirectamente
Ú til par a r esolver cier tos pr oblemas
U so de métodos sobr ecar gados
D eclar ación de métodos sobr ecar gados
Signatur as de métodos
U so de métodos sobr ecar gados
D eclar ación de métodos sobr ecar gados
M étodos que compar ten un nombr e en una clase
Se distinguen examinando la lista de parámetros class OverloadingExample class OverloadingExample {{ static int Suma(int a, int b) static int Suma(int a, int b) { { return a + b; return a + b; } } static int Suma(int a, int b, int c) static int Suma(int a, int b, int c) { { return a + b + c; return a + b + c; } } static void Main( ) static void Main( ) { { Console.WriteLine(Suma(1,2) + Suma(1,2,3)); Console.WriteLine(Suma(1,2) + Suma(1,2,3)); } } }}
Signatur as de métodos
L as signatur as de métodos deben ser únicas dentr o de una clase
D efinición de signatur a
FFor orman man la la definición definición de de la la signatur signaturaa
Nombre Nombredel del método método
Tipo de parámetro Tipo de parámetro Modificador Modificador
N Noo afectan afectan aa la la signatur signaturaa Nombre de Nombre de
parámetro parámetro
Tipo de retorno de Tipo de retorno de
método método
U so de métodos sobr ecar gados
Conviene usar métodos sobr ecar gados si :
Hay métodos similares que requieren parámetros diferentes
Se quiere añadir funcionalidad al código existente
N o hay que abusar , ya que:
Son difíciles de depurar
Son difíciles de mantener
Pr áctica - Cr eación y uso de métodos