在 C# 中将引用数组作为参数传递

Pass reference array as argument in c#

亲爱的,

我已经创建了一个方法,在使用 ref 选项填充它们后将检索三个数组

出现以下错误“System.IndexOutOfRangeException:'Index was outside the bounds of the array.'”

代码如下。我该如何修复它

 namespace ConsoleApp9
{
    class Program
    {
        public static int getarrays(ref string[] patternName, ref int[] loadindex, ref double[] loadFactor)
        {
            int status = 0;
            for (int i = 0; i < 4; i++)
            {
                patternName[i] = "test";
            }
            for (int i = 0; i < 5; i++)
            {
                loadindex[i] = i;
            }
            for (int i = 0; i < 8; i++)
            {
                loadFactor[i] = i/10;
            }
            return status;
        }
        static void Main(string[] args)
        {
            string[] ptt = new string[1];
            int[] index = new int[1];
            double[] factor = new double[1];
            getarrays(ref ptt,ref index, ref factor);
        }
    }

}

您正在传递固定大小为 1 的数组。在你的方法中,你迭代了 4、5 和 8 次,而你的 arrays 的长度为 1。你应该制作一个常量 pttSizeindexSizefactorSize 和将它们用作 arrays 尺寸和 loops 长度。

您将长度为 1 的数组传递给函数,然后尝试访问大于 0 的索引。

调整您的 Main 方法以传递正确长度的数组:

string[] ptt = new string[4];
int[] index = new int[5];
double[] factor = new double[8];

您的数组大小均为 1,但您的循环分别为 4、5 和 8。相反,在循环中使用数组的 Length 属性:

for (int i = 0; i < patternName.Length; i++)
{
    patternName[i] = "test";
}

这很有用,因为数组的大小仅位于一处(在创建数组时)。