从表中获取值作为参考

use*_*064 1 c# reference ref visual-studio

在c ++中,它可以通过引用(&)或指针(*)来实现.在C#中有"ref".如何从表中获取值并通过引用来更改它?

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            int[] t=new int[3]{1,2,3};
            int a=t[0]; //ref int a=t[0];
            a+=10;
            System.Console.WriteLine("a={0}", a);   //11
            System.Console.WriteLine("t[0]={0}", t[0]); //1
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

例如在c ++中

int &a=tab[0];
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

这只在C#7中变得可行,使用ref locals:

public class Program
{
    public static void Main(string[] args)
    {
        int[] t = {1, 2, 3};
        ref int a = ref t[0];
        a += 10;
        System.Console.WriteLine($"a={a}");       // 11
        System.Console.WriteLine($"t[0]={t[0]}"); // 11
    }
}
Run Code Online (Sandbox Code Playgroud)

这是重要的一句话:

ref int a = ref t[0];
Run Code Online (Sandbox Code Playgroud)

C#7还支持ref返回.我建议谨慎地使用这两个功能 - 虽然它们肯定是有用的,但对于许多C#开发人员来说它们并不熟悉,我可以看到它们造成了很大的混乱.