从任意位置访问阵列

本文关键字:阵列 访问 位置 任意 | 更新日期: 2023-09-27 18:00:12

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

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

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

我需要一种方法来解决这个问题,这样我就可以从代码中的任何地方访问数组了。

从任意位置访问阵列

尝试在表单之间传递消息。

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; }
}

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

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

我认为您有设计问题,所以我将尝试添加一些信息来帮助您解决问题。

首先,静态类实际上是在项目运行后立即创建的。但是静态类也可以有一个静态构造函数(您可以在其中定义变量.rows),该构造函数也会在项目运行时运行一次。

此外,也许您应该使用ArrayList(http://msdn.microsoft.com/en-us/library/system.collections.arraylist.aspx)或GenericList(http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx),通过这样做,您可以轻松避免数组变量的限制(如更改其大小)。