C#中将静态数组赋值给非静态数组时,是按引用还是按值?

When assigning a static array to a non-static array in C#, is it done by reference or value?

我的问题是关于 C# 语言行为的。我有一些代码,其中有一些具有不同值的静态数组和一个在不同时间设置为这些数组之一的非静态字段数组。我的假设是,如果调用下面的 UpdateArrayToUse,它将通过引用设置它,这意味着如果稍后再次调用 LoadArrays 并且磁盘值已更改,则非静态字段 Options 将已经更改。但是,这不是我看到的行为。我很想知道是否有人对此有任何见解。

    private static string[] StaticArray1;
    private static string[] StaticArray2;

    public static void LoadArrays()
    {
        //Loads arrays from disk, can be changed elsewhere
        StaticArray1 = LoadArray1();
        StaticArray2 = LoadArray2(); 
    }

    public void UpdateArrayToUse(int i)
    {
        if(i == 1){
            Options = StaticArray1;
            return;
        }

        Options = StaticArray2;
    }

    public string[] Options;

LoadArray 中的代码不会更改任何数组。它分配什么方法 return,这显然是新方法,您将它们分配给变量。因此,如果您在某处存储对先前数组的引用,它仍将保留其值。

如果数组已经创建并且您更改了其中的值,情况就会有所不同。然后你期望看到的事情就会发生。

但我们并不确切知道这些加载方法中的代码是做什么的。它 可以 也使用一个没有再次分配的内部数组,在这种情况下它又会有所不同。