数组问题

时间:2016-02-24 18:27:37

标签: c# arrays

最近在我的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仍然。这是因为它没有通过引用传递吗?这让我很困惑,因为我在第一个上运行了一个小测试程序(没有null部分),并且数组中的所有值都设置为1,但我没有通过引用传递。

1 个答案:

答案 0 :(得分:4)

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

答:“theArray”(例程内)设置为null。但是“myArray”(例程之外)是 UNCHANGED 。原因是“myArray”是object referencepassed by value为DoWork()。

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

答:是的,确切地说。从上面的链接:

  

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

     

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

这些链接进一步解释: