Compiler error · error CS1501 / CS7036
No overload for method 'X' takes N arguments
Your call and the method's parameter list disagree about the count. CS1501 is the "too many arguments" flavor; CS7036 fires when a required parameter got no argument at all.
See both happen
Console.WriteLine(Math.Max(3)); // Max needs TWO values to compare — one was given
void PrintScore(string name, int score)
{
Console.WriteLine(name + ": " + score);
}
PrintScore("Ada"); // 'score' never got a value — CS7036 names it
Fix 1: give the method what it asked for
Console.WriteLine(Math.Max(3, 7));
void PrintScore(string name, int score)
{
Console.WriteLine(name + ": " + score);
}
PrintScore("Ada", 95);
The diagnostic names the exact parameter you starved — read it, then check the method's signature (F12 / Go-to-Definition in Visual Studio) and match names to slots one by one.
Fix 2: if "optional" was the intent, declare it optional
void PrintScore(string name, int score = 0) // default makes it optional
{
Console.WriteLine(name + ": " + score);
}
PrintScore("Ada"); // score falls back to 0
PrintScore("Bob", 95);
Optional parameters fill from the RIGHT — you can skip score but never name. That's also why optional parameters must come after required ones.
The overload confusion
Same method name with different parameter lists = overloads. The compiler picks by count and types — when none matches, you get CS1501 even though a same-named method exists:
void Print(int x) { … }
void Print(string s) { … }
void Print(int x, int y) { … }
Print(1); // ✓ the first overload
Print("hi"); // ✓ the second
Print(1, 2); // ✓ the third
Print(1.5); // ✗ CS1503/CS1501 territory: no Print(double) exists
Frequently asked
How do I fix error CS1501 in C#?
CS1501 is the 'no overload takes N arguments' error (usually too many). CS7036 names the specific required parameter that received no argument (usually too few). Same root cause: call and signature disagree on the count.
What is the difference between CS1501 and CS7036?
undefined
Checklist
- Count your arguments against the signature — the error text contains both numbers.
- CS7036 names the parameter you forgot — it's usually the second or third one.
- Optional parameters: declare a default, and remember they fill from the right.
- Named arguments can rescue an odd order:
PrintScore(score: 95, name: "Ada"). - Related: CS1729 is this same error for constructors.