按值传递并在C#花括号中通过引用传递

时间:2016-03-21 01:48:58

标签: c#

为什么我一直在"}期待"}每次我运行我的程序?我不认为我错过任何大括号。可能是别的吗?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {

            int[] anArray = new int[] {30, 40, 60, 70, 80, 90, 100, 110};

            var byVal = anArray[0];
            Console.WriteLine("by value: " + byVal);

            ref int byRef = anArray[0];
            Console.WriteLine("by reference: " + byRef);


       }
    }
}

enter image description here

2 个答案:

答案 0 :(得分:1)

它无法解析您的代码(不确定为什么它会在}上找到。)

这是无效的C#代码

ref int byRef = anArray[0];

您无法将变量定义为ref。将参数传递给方法时使用它。例如:

void Main()
{
    int b = 6;
    ChangeIt(ref b);
    Console.WriteLine(b);
}

void ChangeIt(ref int a)
{
    a = 5;
}

将打印出5

答案 1 :(得分:0)

您似乎误解了ref关键字的含义:它用于通过引用传递参数,而不是引用局部变量。

C#确定根据该变量的类型使变量成为引用或值:基本类型和struct是值类型,因此与这些类型对应的变量存储值。另一方面,类是引用类型,因此相应类型的变量存储引用。