我正在尝试使用预定值初始化一个对象数组,但我得到“对象引用未设置为对象的实例”。
我不明白问题的原因,因为我正确地初始化然后我正在为数组添加值
主要是:
Sorteo P=new Sorteo();
P.Predetermined();
Class Sorteo:
// Atribute
private ClassA[] A;
int count=0;
// Methods
public Sorteo()
{
A=new ClassA[2];
}
public void Add(ClassA a)
{
A[count]=a;
count++;
}
public void PredeterminedValues()
{
A[0].Add(new ClassB("SomeString1"));
A[1].Add(new ClassB("SomeString2"));
}
答案 0 :(得分:2)
您正在处理一组引用类型,而不是值类型。
在以下行中:
A = new ClassA[2];
//[0] -> null
//[1] -> null
您确实初始化了一个数组,该数组包含 ClassA 类型的引用对象。
在这种情况下,它实际上包含两个ClassA类型的变量,但是每个变量都将被设置为null(因为你没有初始化它们),因此当你尝试引用它们时,异常 < em>将抛出未设置为对象实例的对象引用 。
解?
初始化数组后添加此内容
A[0] = new ClassA(); // not null anymore
A[1] = new ClassA(); // not null anymore
答案 1 :(得分:0)
我很难理解你的问题,但这是你想要做的吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace YourNameSpace
{
public class Program
{
public static void Main(string[] args)
{
ClassA Item = new ClassA();
Item.PredeterminedValues();
foreach(string s in Item.StringArray)
{
Console.WriteLine(s);
}
}
}
public class ClassA
{
public int Counter {get;private set;}
public string[] StringArray{get;private set;}
public ClassA()
{
StringArray = new string[2];
}
public void Add(int Value)
{
Counter += Value;
}
public void PredeterminedValues()
{
StringArray[0] = ("SomeString1");
StringArray[1] = ("SomeString2");
}
}
}