我正在构建这个简单的程序,但我遇到了一些问题。我将一个数组封装到一个类中,并用随机数填充它。在Main中我想使用Console.WriteLine()来评估它时,它会给出一个错误:
无法将带有[]的索引应用于“方法组”类型的表达式。
我做错了什么?
class Program
{
public static void Main(string[] args)
{
Arrays randomArray = new Arrays();
Console.WriteLine("Please type in an integer!");
int encryptionKey = Convert.ToInt32(Console.ReadLine());
randomArray.MyArray.SetValue(encryptionKey, 0);
int i = 0;
while (i < 256)
{
Console.WriteLine(i + " " + randomArray.MyArray[i]);
i++;
}
Console.ReadLine();
}
public static int[] MakeArray()
{
Random rnd = new Random();
var value = Enumerable.Range(0, 256)
.Select(x => new { val = x, order = rnd.Next() })
.OrderBy(i => i.order)
.Select(x => x.val)
.ToArray();
return value;
}
}
public class Arrays
{
private int[] _myArray;
public int[] MyArray
{
get
{
return _myArray;
}
set
{
_myArray = Program.MakeArray();
}
}
}
答案 0 :(得分:2)
首先,在行
randomArray.MyArray.SetValue(encryptionKey, 0);
程序为您提供了一个异常(空引用),因为在这一行中MyArray的get部分将被执行并返回null给调用者。所以你必须在class(Arrays)的构造函数中设置你的数组(MyArray)值,而且这个部分的设计是错误的
set
{
_myArray = Program.MakeArray();
}
试试这个
public class Arrays
{
public int[] _myArray;
public Arrays() {
MyArray = Program.MakeArray();
}
public int[] MyArray
{
get; set;
}
}
这将解决问题