我有一个静态数组,它使用一个名为Variables.rows
的静态变量来定义数组中的行数。 Variables.rows
在另一个名为Variables
的静态类中定义。
public static class TheArrayClass
{
public static double[,] HiThere = new double[Variables.rows, 6];
}
我的问题是静态数组一旦运行项目就会被创建(我相信)。这意味着为Variables.Rows
分配正确值所需的方法不会及时执行。这意味着在填充数组时出现索引错误,因为数组的大小不正确。
我需要解决这个问题,以便我可以从代码中的任何位置访问数组。
答案 0 :(得分:2)
尝试在表单之间传递消息。
public partial class Form1 : Form
{
private string _data;
public Form1()
{
InitializeComponent();
_data = "Some data";
}
private void button1_Click(object sender, EventArgs e)
{
var form2 = new Form2();
form2.Data = _data;
form2.Show();
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public string Data { get; set; }
}
答案 1 :(得分:1)
有趣的是,您没有显示Variables.Rows
的定义位置。无论哪种方式,您都可以在classe的构造函数中执行任何初始化。
public static class TheArrayClass
{
public static double[,] HiThere;
static TheArrayClass()
{
HiThere = new double[Variables.rows, 6];
}
}
答案 2 :(得分:0)
我认为你有设计问题,所以我会尝试添加一些可以帮助你解决问题的信息。
首先,一旦项目运行,就会创建一个静态类。但是静态类也可以有一个静态构造函数(你可以在其中定义variables.rows),一旦项目运行,它也会运行一次。
此外,也许您应该使用ArrayList(http://msdn.microsoft.com/en-us/library/system.collections.arraylist.aspx)或GenericList(http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx),这样可以轻松避免数组变量限制(例如更改其大小)。