数组问题

本文关键字:问题 数组 | 更新日期: 2023-09-27 18:36:07

最近在我的C#课上做了一个测验,做了一些错误。我想我有答案,但我想确保我是对的。

第一个:

解释结果

int[] myArray = {5,10,15,20,25};
DoWork(myArray);
void DoWork(int[] theArray)
{
    for (int c = 0; c < theArray.Length; c++)
    {
        theArray[c] = 1;
    }
    theArray = null;
}

对于这个,我只做对了一半。我说循环会将数组中每个元素的值设置为 1。所以我的问题是,当您将数组设置为 null 时会发生什么?

第二个:

解释结果

int[] myArray = {5,10,15,20,25};
DoWork(myArray[1]);
void DoWork(int theItem)
{
    theItem = -1;
}

这个我完全错了。更正是 myArray[1] = 10 仍然。这是因为它没有通过引用传递吗?这让我很困惑,因为我在第一个(没有空部分)上运行了一个小测试程序,并且数组中的所有值都设置为 1,但我没有通过引用传递。

数组问题

问:将数组设置为 null 时会发生什么情况?

答:"theArray"(在例程内)设置为 null。 但是"myArray"(在例程之外)是不变的。 原因是"myArray"是一个对象引用,它通过值传递到DoWork()中。

问:这是因为它没有通过引用传递吗?

答:是的,没错。 从上面的链接:

https://msdn.microsoft.com/en-us/library/9t0za5es.aspx

在方法内部对参数进行的任何更改都没有 影响存储在参数变量中的原始数据。

这些链接进一步解释:

  • C# 参数传递、引用和输出

  • C# - 通过引用传递参数