Parámetros opcionales/con nombre; ref/out/in (conceptos básicos)
Use parámetros opcionales y argumentos con nombre para aportar claridad; pase por referencia con ref; devuelva valores adicionales con out; tenga en cuenta que los parámetros in no están disponibles en C# 6.
Parámetros opcionales/con nombre; ref/out/in (conceptos básicos) es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 2 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 3 lecciones en total.
Descripción general de la lección
Objetivo: Use parámetros opcionales y argumentos con nombre para mejorar la legibilidad; comprenda ref y out. Nota: los parámetros in no están disponibles en C# 6.
Parámetros opcionales
Añada valores predeterminados para una personalización sencilla sin crear muchas sobrecargas.
using System;
public static class Notifier
{
// Optional parameter: suffix has a default value
public static void Notify(string message, string suffix = "!")
{
Console.WriteLine(message + suffix);
}
}
public class Program
{
public static void Main(string[] args)
{
Notifier.Notify("Saved"); // uses "!"
Notifier.Notify("Warning", "!!"); // overrides default
}
}
Argumentos con nombre
Los argumentos con nombre hacen que las llamadas se documenten por sí mismas y permiten reordenarlas de forma segura.
using System;
public static class Greeter
{
public static void Greet(string name, string prefix, int repeat)
{
for (int i = 0; i < repeat; i = i + 1)
{
Console.WriteLine(prefix + " " + name);
}
}
}
public class Program
{
public static void Main(string[] args)
{
// Named args improve readability and allow reordering at call site
Greeter.Greet(name: "Ada", prefix: "Hello", repeat: 2);
Greeter.Greet(repeat: 1, name: "Alan", prefix: "Hi");
}
}
Parámetro ref
ref pasa una variable por referencia; quien realiza la llamada debe inicializarla primero.
using System;
public static class RefDemo
{
public static void Increment(ref int n)
{
n = n + 1; // modifies caller's variable
}
}
public class Program
{
public static void Main(string[] args)
{
int value = 5; // must be assigned before passing by ref
RefDemo.Increment(ref value);
Console.WriteLine("value = " + value); // 6
}
}
Parámetro out
out permite que un método devuelva valores adicionales mediante parámetros; el método debe asignarles un valor.
using System;
public static class OutDemo
{
public static bool TryDivide(int a, int b, out int result)
{
if (b == 0)
{
result = 0; // out must be assigned before return
return false;
}
result = a / b;
return true;
}
}
public class Program
{
public static void Main(string[] args)
{
int r; // not required to be assigned before passing as out
bool ok = OutDemo.TryDivide(9, 0, out r);
Console.WriteLine("ok=" + ok + " r=" + r);
}
}
Acerca de "in" (C# 6)
Nota: los parámetros in (solo lectura por referencia) llegaron en versiones posteriores de C#. En C# 6 puede:
- Pasar por valor (copia) los tipos pequeños
- Usar ref solo cuando sea necesaria la modificación
- Hacer que los parámetros de los métodos sean readonly por convención (no reasignarlos)
Conceptos básicos de ref y out
Repaso
Repaso: Use parámetros opcionales para los valores predeterminados, argumentos con nombre para mejorar la claridad, ref para modificar los datos de quien realiza la llamada y out para devolver valores adicionales. C# 6 no admite parámetros in.
Preguntas frecuentes
¿La lección «Parámetros opcionales/con nombre; ref/out/in (conceptos básicos)» es gratis?
Sí — el texto completo de «Parámetros opcionales/con nombre; ref/out/in (conceptos básicos)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 3 lecciones en total.
¿Qué aprenderé en «Parámetros opcionales/con nombre; ref/out/in (conceptos básicos)»?
Use parámetros opcionales y argumentos con nombre para aportar claridad; pase por referencia con ref; devuelva valores adicionales con out; tenga en cuenta que los parámetros in no están disponibles… Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C# Academy?
No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 3.
¿Cuánto tiempo toma la lección «Parámetros opcionales/con nombre; ref/out/in (conceptos básicos)»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C# Academy?
Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Firmas y retornos; métodos con cuerpo de expresión; parámetros opcionales/con nombre; ref/out; sobrecarga
- Parámetros opcionales/con nombre; ref/out/in (conceptos básicos)
- Funciones locales (nota sobre C# 6) y sobrecarga