EKsumic's Blog

let today = new Beginning();

Click the left button to use the catalog.

OR

C#ref关键字

ref关键字

 

ref关键字其实是用来对static的方法里面的值,实现真正的关联。
 

比如:

 static void TestRef(int a,int b)
    {
        int temp;
        temp = b;
        b = a;
        a = temp;
    }

你在使用这个方法的时候,并不会发生交换。

    static void TestRef(ref int a,ref int b)
    {
        int temp;
        temp = b;
        b = a;
        a = temp;
    }

这样才会发生交换。

 

原理是,不加ref,是(按值传递)不是(按引用传递),

所以在使用a和b的时候,里面参数a和b仅仅是复制了外面a和b的值,

然后进行交换,这个交换仅在方法内,实际并没有对外面的a和b造成影响。

 

举例:

class Program
    {
        static void TestRef(string a,string b)
        {
            string temp;
            temp = b;
            b = a;
            a = temp;
            Console.WriteLine(a + " " + b);
        }
        static void Main()
        {
            string a = "Hello";
            string b = "World";
            TestRef(a,b);
            Console.WriteLine(a+" "+b);
            Console.Read();
        }
    }

输出:

World Hello
Hello World

(按值传递)还是(按引用传递)也是方法签名的一部分。

This article was last edited at 2020-03-14 15:18:00

* *