Overloaded methods share a name but accept different parameter types or counts.

overload An overload is another method with the same name and a different parameter list.

Overloads

count
Overloads.cs
Replay: real traced execution (multi-file project)
using System;

class Program
{
    static string Describe(int count)
    {
        return $"count={count}";
    }

    static string Describe(string name, int count)
    {
        return $"{name}:{count}";
    }

    static void Main()
    {
        int count = 3;
        string first = Describe(count);
        string second = Describe("item", count);

        Console.WriteLine(first);
        Console.WriteLine(second);
    }
}
using System;

class Program
{
    static string Describe(int count)
    {
        return $"count={count}";
    }

    static string Describe(string name, int count)
    {
        return $"{name}:{count}";
    }

    static void Main()
    {
        int count = 1;
        string first = Describe(count);
        string second = Describe("item", count);

        Console.WriteLine(first);
        Console.WriteLine(second);
    }
}
using System;

class Program
{
    static string Describe(int count)
    {
        return $"count={count}";
    }

    static string Describe(string name, int count)
    {
        return $"{name}:{count}";
    }

    static void Main()
    {
        int count = 5;
        string first = Describe(count);
        string second = Describe("item", count);

        Console.WriteLine(first);
        Console.WriteLine(second);
    }
}
  1. count ← 3

    15static void Main()16{17    int count→ 3 = 3; //@count=1, 518    string first = Describe(count3);19    string second = Describe("item", count);
  2. static string Describe(int count)

    4{5    static string Describe(int count3)6    {7        return $"count={count3}";8    }
  3. first ← count=3

    17int count = 3; //@count=1, 518string first→ count=3 = Describe(count3);19string second = Describe("item", count3);
  4. static string Describe(string name, int count)

    10static string Describe(string nameitem, int count3)11{12    return $"{nameitem}:{count3}";13}
  5. second ← item:3

    18    string first = Describe(count);19    string second→ item:3 = Describe("item", count3);2021    Console.WriteLine(firstcount=3);22    Console.WriteLine(seconditem:3);23}
    outputcount=3
    item:3
  1. count ← 1

    15static void Main()16{17    int count→ 1 = 1;18    string first = Describe(count1);19    string second = Describe("item", count);
  2. static string Describe(int count)

    4{5    static string Describe(int count1)6    {7        return $"count={count1}";8    }
  3. first ← count=1

    17int count = 1;18string first→ count=1 = Describe(count1);19string second = Describe("item", count1);
  4. static string Describe(string name, int count)

    10static string Describe(string nameitem, int count1)11{12    return $"{nameitem}:{count1}";13}
  5. second ← item:1

    18    string first = Describe(count);19    string second→ item:1 = Describe("item", count1);2021    Console.WriteLine(firstcount=1);22    Console.WriteLine(seconditem:1);23}
    outputcount=1
    item:1
  1. count ← 5

    15static void Main()16{17    int count→ 5 = 5;18    string first = Describe(count5);19    string second = Describe("item", count);
  2. static string Describe(int count)

    4{5    static string Describe(int count5)6    {7        return $"count={count5}";8    }
  3. first ← count=5

    17int count = 5;18string first→ count=5 = Describe(count5);19string second = Describe("item", count5);
  4. static string Describe(string name, int count)

    10static string Describe(string nameitem, int count5)11{12    return $"{nameitem}:{count5}";13}
  5. second ← item:5

    18    string first = Describe(count);19    string second→ item:5 = Describe("item", count5);2021    Console.WriteLine(firstcount=5);22    Console.WriteLine(seconditem:5);23}
    outputcount=5
    item:5