Valores de retorno
Escribe un método llamado twice que tome un int llamado n y devuelva el doble de ese número. El encabezado empieza con int, no con void: static int twice(int n). Dentro de las llaves escribe return n * 2;. En Main, escribe el resultado de la llamada: Console.WriteLine(twice(7));. La pantalla debería mostrar una línea: 14. El propio twice no llama a WriteLine. Solo entrega 14. Main escribe ese número. Esa entrega es lo que enseña esta página. Mantén el nombre de la clase pública Pine.
Entrega un número de vuelta a Main
En la página de parámetros, greet y show escribían dentro del cuerpo del método. La llamada enviaba un valor hacia dentro, y el método escribía en la pantalla. Aquí el método sigue recibiendo un valor, pero también envía un valor hacia fuera. La palabra return marca ese valor saliente. Main puede guardarlo o escribirlo.
Abre el archivo Pine. El nombre de la clase sigue siendo Pine. Esta página no renombra el tipo. Borra cualquier demo greet que solo escriba hi lena dentro del método si esa forma es todo lo que aún tienes en Main. Borra cualquier resto de ring();. Borra cualquier línea ReadLine. El archivo que guardas no espera escritura.
Fuera de Main, aún dentro de las llaves de la clase, el encabezado dice int porque el valor que vuelve es un int. Entre los paréntesis, int n sigue siendo un parámetro — la misma idea que la página anterior. El cuerpo tiene una sentencia: return n * 2;. Eso multiplica n por 2 y envía el producto a quien llamó a twice. No hay Console.WriteLine dentro de twice en esta página. Guarda el archivo antes de ejecutar. El primer programa completo está en el siguiente cuadro.
El archivo que guardas
Este es el programa pequeño completo. twice calcula. Main escribe.
using System;
public class Pine
{
public static void Main()
{
Console.WriteLine(twice(7));
}
static int twice(int n)
{
return n * 2;
}
}
Léelo desde arriba. using System; prepara nombres cortos. public class Pine nombra el tipo. public static void Main() es donde arranca el tiempo de ejecución. La llamada twice(7) envía 7 a n. static int twice(int n) guarda return n * 2;. Console.WriteLine escribe el valor que volvió. Una línea en la pantalla: 14.
Ejecútalo con dotnet run. El programa escribe una línea y se detiene. No espera a que escribas. Si dotnet run espera, ReadLine sigue en el archivo. Borra esa línea y quédate con Console.WriteLine(twice(7)); más el método twice de arriba. La pantalla muestra 14. Si la pantalla muestra hi lena, aún corre una llamada sobrante de greet. Si la pantalla muestra las letras twice, una línea de escritura tiene comillas alrededor de esa palabra: Console.WriteLine("twice");. No reinstales el SDK de .NET por una pantalla que muestra la línea incorrecta.
Recorre una ejecución completa en orden. C# empieza en Main. La llamada twice(7) envía 7 a n. Dentro de twice, return n * 2; calcula 14 y entrega ese 14 a Main. Luego WriteLine escribe 14. twice nunca escribió en la pantalla por sí solo. Si cambias la llamada a twice(3), la pantalla debería mostrar 6. El cuerpo del método sigue igual; solo cambia el argumento, y el producto devuelto cambia con él. Si la pantalla muestra 7 en vez de 14, escribiste n dentro de twice o escribiste el argumento en Main sin llamar a twice — pon el doble en la línea return y escribe el resultado de la llamada.
La separación importante es quién habla con la pantalla. En esta página, twice habla solo con Main a través de return. Main habla con la pantalla a través de WriteLine. Por eso el encabezado ya no puede decir void: algo debe volver para que Main escriba. Cuando guardas el resultado primero en result, sigues usando esa misma entrega; solo retrasas la escritura una línea.
Escribe el valor que recibió Main
También puedes guardar el valor devuelto en un nombre dentro de Main antes de escribir. Cambia solo el número en la llamada si quieres una línea distinta en pantalla. Deja return n * 2; como está.
using System;
public class Pine
{
public static void Main()
{
int result = twice(7);
Console.WriteLine(result);
}
static int twice(int n)
{
return n * 2;
}
}
Este es el segundo archivo. Enseña el mismo return con un nombre guardado. Ejecuta dotnet run. Eso sigue mostrando una línea: 14. La llamada termina primero y llena result. Luego WriteLine escribe result. Ambas formas — escribir la llamada directamente, o guardar y luego escribir — usan el mismo return de twice. twice(0) debería escribir 0. twice(10) debería escribir 20. Cada vez Main escribe lo que twice entregó. Después de ver la forma guardada, vuelve al archivo de llamada en una línea si esa es la forma que quieres guardar: Console.WriteLine(twice(7)); en Main.
Si twice aún dice void en el encabezado pero el cuerpo tiene return n * 2;, la compilación escribe un error — void significa que nada vuelve, así que un return con valor no encaja. Si el encabezado dice int pero el cuerpo no tiene return, la compilación también escribe un error — un método int en esta forma para principiantes debe devolver un int. Si el cuerpo escribe y nunca devuelve, vuelves a la idea de la página de parámetros; esta página quiere el número en manos de Main.
void frente a un retorno tipado
Lee las dos formas lado a lado. Un método void ejecuta su cuerpo y termina. Un método con retorno tipado debe entregar un valor con return. Cuando el tipo de retorno no es void, Main trata la llamada como ese valor.
📊 void body versus return
| Shape | What the method does | What Main often does |
|---|---|---|
void show(int n) |
writes inside the body | calls show(9); and may write nothing else |
int twice(int n) |
return n * 2; |
writes or stores twice(7) |
Una confusión común es poner Console.WriteLine(n * 2); dentro de twice y dejar el encabezado como int sin un return. Entonces la compilación se queja, o cambias el encabezado otra vez a void y ya no tienes un valor para que Main escriba desde la llamada. Otra confusión es escribir return; sin valor mientras el encabezado dice int. Mantén return n * 2; para que el tipo de la expresión devuelta coincida con int. Escribir Console.WriteLine("twice"); en Main escribe la palabra twice; no llama al método. Mantén Console.WriteLine(twice(7)) cuando quieras 14 en la pantalla.
Una demo greet sobrante que solo escribe hi lena dentro del método puede quedarse en el mismo archivo y confundir la pantalla. Limpia Main hasta el WriteLine que usa twice, y quédate con un método que devuelve. No anides twice dentro de las llaves de Main. Los métodos se sientan dentro de la clase, junto a Main.
Puedes escribir static int twice(int n), devolver un valor calculado y escribir ese valor desde Main. La pantalla muestra el número que recibió Main, no una línea que el método escribió por su cuenta. void es el encabezado equivocado cuando necesitas un valor de vuelta. La página siguiente es overloading, donde más de un método puede compartir un nombre cuando sus listas de parámetros difieren.
La pantalla guarda lo que recibió Main
El archivo que guardas escribe 14 cuando Main escribe el resultado de twice(7). La palabra return está en el cuerpo del método, y return no está en la pantalla como etiqueta impresa. Las comillas alrededor de twice escriben letras, no el resultado de la llamada. Anidar twice dentro de Main no es la forma que construye esta lección.
🧠 Pon a Prueba tu Conocimiento
Pon a Prueba tu Conocimiento
Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema
📝 Instrucciones
- Lee cada pregunta cuidadosamente
- Selecciona la mejor respuesta para cada pregunta
- Puedes repetir el quiz tantas veces como quieras
- Tu progreso se mostrará en la parte superior