从任何地方访问数组

时间:2013-02-19 15:21:04

标签: c# arrays static

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

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

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

我需要解决这个问题,以便我可以从代码中的任何位置访问数组。

3 个答案:

答案 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),这样可以轻松避免数组变量限制(例如更改其大小)。