在当前上下文中不存在(Visual c#)

本文关键字:Visual 不存在 上下文 | 更新日期: 2023-09-27 18:13:52

显示错误;名称"map"在当前上下文中不存在。我做错了什么?对不起,我对编码很陌生…

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    private void Form1_Load(object sender, EventArgs e)
    {
        variables();
    }
    public static void variables()
    {
        string[,] map;
        map = new string[140, 140];
    }
    public static void updateMap(string[,] map)
    {
        MessageBox.Show("a");
    }
    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        updateMap(map);
    }

}

在当前上下文中不存在(Visual c#)

创建类变量string[,] map.

public partial class Form1 : Form
{
    public string[,] map; 
    ...

所以你的变量"map"将在这个类的所有(非静态)方法中被访问

去掉变量方法。

public static void variables()
{
    string[,] map;
    map = new string[140, 140];
}

应该放在你的类中,这样所有其他方法都可以访问它。

把类想象成父类。类中的所有"方法"都是它的子类。孩子体内的一切都是它的"东西"。孩子们不喜欢分享,尤其是和他们的兄弟姐妹。

在这种情况下,你想把它放在父母控制的地方,孩子们必须遵守父母的"分享"规则

public partial class Form1 : Form
{
    public string[,] map;
    map = new string[140, 140];
    public Form 1: Form1()
    {
     ....
    }
    private void Form1_Load()
    {
     .....
    }
    public static void updateMap()
    {
     .....
    }
    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
    .....
    }
}

变量map仅在此方法中有效,因为它在以下语句中声明:

public static void variables()
{
    string[,] map;
    map = new string[140, 140];
}

如果它应该对整个类有效,只需将其声明为一个字段:

public partial class Form1 : Form
{
    string[,] map;
    public Form1()
    {
       InitializeComponent();
    }
    ...
}

但这是非常非常基本的。我强烈推荐你读一本关于c#的书:

http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps& field-keywords = c % 23

您只在variables方法的上下文中声明了map(甚至不确定该方法是用于什么)。因此,在该方法之外的任何地方都无法访问该变量。您需要将其声明为类属性,如下所示:

public partial class Form1 : Form
{
    private string[,] map;
    ...
}

然后,在你的Load方法上初始化它:

private void Form1_Load(object sender, EventArgs e)
{
    map = new string[140,140];
}

你可以取消variables方法,并从你的其他方法中引用这个属性,就像你现在所做的。