我的 C# 函数似乎在传递 ref,为什么要这样做?

My C# functions seems to be acting as if I am passing by ref, why does it do this?

在查看了一些布尔数组和整数后,我有一个布尔值 returns true 或 false。

if (CheckForRoute(VertWallAbove, HoriWallLeft, NewWallX, NewWallY, NewWallHor))

在此函数中,来自 HoriWallLeft 的参数将其值 [0,0] 设置为真(在此之前,数组中的每个值都是假的,我已经检查过断点是否会发生这种情况)。退出函数后 HoriWallLeft[0,0] 的值立即为真,我原以为这只会在我经过 ref.

时发生

编辑: 这是我的意思的一个例子

static void Main(string[] args)
{
    bool[] Test = new bool[] { false, false, false, false };
    ExampleFunction(Test);
    if(Test[0])
    {
        Console.WriteLine("A");
    }
    else
    {
    Console.WriteLine("B");
    }
    Console.ReadLine();
}
static bool ExampleFunction(bool[] TestArray)
{
    TestArray[0] = true;
    return true;
}

我希望它输出 B 但它输出 A

这是正确的,您正在将对此数组的引用传递给函数。 没有创建数组的副本。

如果你想创建一个副本,你可以调用

ExampleFunction(Test.ToArray());