C# 从窗体中的main访问数组

C# 从窗体中的main访问数组,c#,arrays,forms,C#,Arrays,Forms,嗨,我正在visual studio上编写一个c#应用程序。我在main中创建了一个数组,我试图在表单上的单击事件中访问该数组,但它告诉我数组“characters”在当前上下文中不存在。我已经尝试将数组传递给表单,但仍然存在相同的问题。任何帮助都将非常感谢这里是我的代码 namespace WindowsFormsApplication10 { static class Program { [STAThread] static void Main

嗨,我正在visual studio上编写一个c#应用程序。我在main中创建了一个数组,我试图在表单上的单击事件中访问该数组,但它告诉我数组“characters”在当前上下文中不存在。我已经尝试将数组传递给表单,但仍然存在相同的问题。任何帮助都将非常感谢这里是我的代码

namespace WindowsFormsApplication10
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            bool[][] characters = new bool[27][];            // my array characters

            characters[1][0] = true; 

            Application.Run(new Form1());            
        }
    }
}

namespace WindowsFormsApplication10
{
    public partial class Form1 : Form
    {
        int cs1 = 0,cs2=0;    

        public Form1()
        {
            InitializeComponent(); 
        }

        public void pictureBox1_Click(object sender, EventArgs e)
        {
            if (characters[1][0] == true)     // trying to access member of characters 
            {                                 // array but characters does not
                                              // exist in the current context
                pictureBox28.Visible = false;
            }
        }
    }
}
  • 将数组作为静态字段存储在对象中,然后您可以在任何地方访问它
  • 作为参数传递
  • RPC

  • 数组是在主函数中定义的,并且仅在其作用域中可见

    您可以做的最简单的操作是将阵列移动到主阵列之外:

    public static bool[][] characters = new bool[27][]; 
    static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
    
                characters[1][0] = true; 
    
                Application.Run(new Form1());            
    
    
            }
    
    public void pictureBox1_Click(object sender, EventArgs e)
            {
    
                if (Main.characters[1][0] == true)     // trying to access member of characters 
                {                                 // array but characters does not
                                                  // exist in the current context
                    pictureBox28.Visible = false;
                }            
    
            }
    
    声明为本地到
    Main
    方法。因此,在它的外面是看不见的

    如果要在
    表单1
    中使用它,请更改为以下内容:

    public partial class Form1 : Form
    {
        bool[][] characters = null;
        int cs1 = 0,cs2=0;
    
        public Form1(bool[][] characters)
        {
            this.characters = characters;
            InitializeComponent();
        }
    
        ...
        ...
    }
    
    Application.Run(new Form1(characters));            
    
    表单
    Main
    ,调用如下:

    public partial class Form1 : Form
    {
        bool[][] characters = null;
        int cs1 = 0,cs2=0;
    
        public Form1(bool[][] characters)
        {
            this.characters = characters;
            InitializeComponent();
        }
    
        ...
        ...
    }
    
    Application.Run(new Form1(characters));            
    

    你有两个选择:1。将变量设为
    程序的静态字段
    ,或2。将数组作为参数传递给
    Form1
    的构造函数。这不是来自同一个PO的几乎完全相同的问题吗?只要列出所有建议,如果他愿意:)