A generic method can work with different value types using one method body.

Generic Methods

GenericMethods.cs
using System;

class Program
{
    static T Pick<T>(T first, T second, bool useSecond)
    {
        if (useSecond)
        {
            return second;
        }

        return first;
    }

    static void Main()
    {
        bool useSecond = ;
        string word = Pick("alpha", "beta", useSecond);
        int number = Pick(10, 20, useSecond);

        Console.WriteLine($"useSecond={useSecond}");
        Console.WriteLine($"word={word}");
        Console.WriteLine($"number={number}");
    }
}
using System;

class Program
{
    static T Pick<T>(T first, T second, bool useSecond)
    {
        if (useSecond)
        {
            return second;
        }

        return first;
    }

    static void Main()
    {
        bool useSecond = ;
        string word = Pick("alpha", "beta", useSecond);
        int number = Pick(10, 20, useSecond);

        Console.WriteLine($"useSecond={useSecond}");
        Console.WriteLine($"word={word}");
        Console.WriteLine($"number={number}");
    }
}
generic method A generic method has a type parameter such as `T`.