在当前上下文中不存在(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);
}
}
创建类变量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
方法,并从你的其他方法中引用这个属性,就像你现在所做的。