在C#中用方法交换n1和n2的问题

请问这段C#代码为什么运行时n1和n2的值无法交换?并且在方法中的n2=temp这一行提示n2是无法访问的代码。感谢

internal class Program
{
    static void Main(string[] args)
    {
        int n1 = 10;
        int n2 = 20;
        Test(n1, n2);
        Console.WriteLine(n1);
        Console.WriteLine(n2);
        Console.ReadKey();
    }

    public static int Test (int n1, int n2)
    {
        int temp = n1;
        n1 = n2;
        return n1;
        n2 = temp;
        return n2;
    }
}

当你return n1后,该函数已经结束了,这时候你在这个函数中是没法继续对n2进行操作的


class Program
{
    static void Main(string[] args)
    {
        int n1 = 10;
        int n2 = 20;
        Test(ref n1,ref n2);//
        Console.WriteLine(n1);
        Console.WriteLine(n2);
        Console.ReadKey();
    }
 
    public static void Test (ref int n1, ref int n2)//
    {
        int temp = n1;
        n1 = n2;
        //return n1;
        n2 = temp;
        //return n2;
    }
}