0

我有一个静态数组,它使用一个静态变量Variables.rows来定义数组中的行数。Variables.rows在另一个名为Variables.

public static class TheArrayClass
{
    public static double[,] HiThere = new double[Variables.rows, 6];
}

我的问题是,一旦项目运行(我相信) ,就会创建静态数组。这意味着分配正确值所需的方法Variables.Rows没有及时执行。这意味着在填充数组时出现索引错误,因为数组的大小不正确。

我需要一种解决方法,以便我可以从代码中的任何位置访问该数组。

4

3 回答 3

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; }
}
于 2013-02-19T15:33:42.713 回答
1

有趣的是,您没有显示Variables.Rows定义的位置。无论哪种方式,您都可以在类的构造函数中执行您想要的任何初始化。

public static class TheArrayClass
{
    public static double[,] HiThere;

    static TheArrayClass()
    {
         HiThere = new double[Variables.rows, 6];
    }
}
于 2013-02-19T15:25:47.713 回答
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),通过这样做,您可以轻松避免数组变量的限制(例如更改其大小)。

于 2013-02-19T15:31:54.143 回答