我的 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());
在查看了一些布尔数组和整数后,我有一个布尔值 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());