在c#中将引用数组作为参数传递[重复]
Posted
技术标签:
【中文标题】在c#中将引用数组作为参数传递[重复]【英文标题】:Pass reference array as argument in c# [duplicate] 【发布时间】:2021-12-05 07:56:18 【问题描述】:亲爱的,
我创建了一个方法,该方法将在使用 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】:您正在传递固定大小为1
的数组。在您的方法中,您将迭代 4、5 和 8 次,而您的 arrays
的长度为 1。您应该创建 pttSize
、indexSize
和 factorSize
的常量并将它们用作 arrays
大小和loops
长度。
【讨论】:
【参考方案2】:您将长度为 1 的数组传递给函数,然后尝试访问大于 0 的索引。
调整您的 Main
方法以传递正确长度的数组:
string[] ptt = new string[4];
int[] index = new int[5];
double[] factor = new double[8];
【讨论】:
【参考方案3】:您的数组的大小均为 1,但您的循环分别为 4、5 和 8。相反,请在循环中使用数组的 Length
属性:
for (int i = 0; i < patternName.Length; i++)
patternName[i] = "test";
这很有帮助,因为数组的大小只位于一个位置(在创建数组时)。
【讨论】:
以上是关于在c#中将引用数组作为参数传递[重复]的主要内容,如果未能解决你的问题,请参考以下文章