获得了这一小段代码。 当我运行它时,我在“Roads_Vertices [i,0] = Convert.ToDouble(Coordinates [0]);”这一行上得到“对象引用未设置为对象的实例”。 帮助!
由于 加布里埃尔
namespace RouteSim
{
static class Program
{
static double[,] Roads_Vertices;
static double[,] Roads_Segments;
static void Main()
{
// Declarations and Initializations
// Read Roads from XML
Parse_Road_Data();
// User Interface
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form_MainWindow());
}
static void Parse_Road_Data()
{
// Reads and parses the Roads XML file
XmlDocument Road_File = new XmlDocument();
Road_File.Load(@"D:\My Documents\Visual Studio 2010\Projects\RouteSim\Additional Data\Roads.xml");
XmlNodeList Road_Vertices_NodeList = Road_File.GetElementsByTagName("Road_Vertex");
for (int i = 0; i < Road_Vertices_NodeList.Count; i++)
{
string[] Coordinates = Road_Vertices_NodeList[i].InnerText.Split(new Char[] { ' ' });
Roads_Vertices[i, 0] = Convert.ToDouble(Coordinates[0]);
Roads_Vertices[i, 1] = Convert.ToDouble(Coordinates[1]);
}
XmlNodeList Road_Segments_NodeList = Road_File.GetElementsByTagName("Road_Segment");
for (int i = 0; i < Road_Segments_NodeList.Count; i++)
{
string[] Coordinates = Road_Segments_NodeList[i].InnerText.Split(new Char[] { ' ' });
Roads_Segments[i, 0] = Convert.ToDouble(Coordinates[0]);
Roads_Segments[i, 1] = Convert.ToDouble(Coordinates[1]);
// Readall the rest of the data
}
}
}
}
答案 0 :(得分:5)
您没有初始化静态数组:
Roads_Vertices = new double[Road_Vertices_NodeList.Count,2];
静态意味着可以在没有它所包含的类型的实例的情况下访问它,或者通过其中的静态方法访问它,但不是它不必初始化。
试着用英语说:
将会有一个静态的Road_Vertices和一个双多维数组:
static double[,] Roads_Vertices; // declaration
在这里,重要的是:
Roads_Vertices = new double[Road_Vertices_NodeList.Count,2]; // definition
答案 1 :(得分:0)
您需要初始化Road_Vertices
和Road_Segment
。你只声明了它们,你还没有为变量赋值。
你需要做类似的事情:
static double[,] Roads_Vertices=new double[someValue,someOtherValue];