Error del compilador · error CS1501 / CS7036

Ninguna sobrecarga del método 'X' toma N argumentos

Tu llamada y la lista de parámetros no se ponen de acuerdo en la cantidad. CS1501 es la variante de "demasiados argumentos"; CS7036 salta cuando un parámetro requerido no recibió argumento alguno.

Mira ambos ocurrir

Console.WriteLine(Math.Max(3));    // Max necesita DOS valores para comparar — le diste uno
void MostrarPuntos(string nombre, int puntos)
{
    Console.WriteLine(nombre + ": " + puntos);
}

MostrarPuntos("Ada");    // 'puntos' nunca recibió valor — CS7036 lo nombra

Solución 1: dale al método lo que pide

Console.WriteLine(Math.Max(3, 7));

void MostrarPuntos(string nombre, int puntos)
{
    Console.WriteLine(nombre + ": " + puntos);
}
MostrarPuntos("Ada", 95);

El diagnóstico nombra el parámetro exacto que dejaste sin argumento — léelo, consulta la firma (F12 / Ir a definición en Visual Studio) y empareja nombres con posiciones uno a uno.

Solución 2: si querías que fuera opcional, decláralo opcional

void MostrarPuntos(string nombre, int puntos = 0)   // el valor por defecto lo hace opcional
{
    Console.WriteLine(nombre + ": " + puntos);
}

MostrarPuntos("Ada");          // puntos cae al valor por defecto 0
MostrarPuntos("Bob", 95);

Los parámetros opcionales se rellenan desde la derecha — puedes omitir puntos pero nunca nombre. Por eso los opcionales deben ir después de los obligatorios.

La confusión de las sobrecargas

Mismo nombre con listas de parámetros distintas = sobrecargas. El compilador elige por cantidad y tipos — cuando ninguna coincide, obtienes CS1501 aunque exista un método con ese nombre:

void Imprimir(int x)      { … }
void Imprimir(string s)   { … }
void Imprimir(int x, int y) { … }

Imprimir(1);          // ✓ la primera sobrecarga
Imprimir("hola");     // ✓ la segunda
Imprimir(1, 2);       // ✓ la tercera
Imprimir(1.5);        // ✗ territorio CS1503/CS1501: no existe Imprimir(double)

Preguntas frecuentes

¿Cómo corrijo CS1501?

El número de argumentos no coincide con ninguna sobrecarga. Cuenta contra la firma — CS7036 nombra el parámetro olvidado. Pasa los que faltan o declara un valor por defecto.

¿Diferencia entre CS1501 y CS7036?

CS1501: "ninguna sobrecarga acepta N argumentos" (demasiados). CS7036: nombra el parámetro requerido sin argumento (muy pocos).

Lista de comprobación