C# 错误CS0103:名称“ResSourceText”在当前上下文中不存在

C# 错误CS0103:名称“ResSourceText”在当前上下文中不存在,c#,visual-studio,C#,Visual Studio,我设置了一个名为ResSourceText的字符串,它将被设置为文本LblRessources 以下是此问题的代码: public void ressources() { string ressourcesText = "Ressources:" + "\n Wood :" + wood + "\n Stone : " + stone + "\n

我设置了一个名为ResSourceText的字符串,它将被设置为文本LblRessources

以下是此问题的代码:

public void ressources()
{
    string ressourcesText = "Ressources:"
                        + "\n Wood :" + wood
                        + "\n Stone : " + stone
                        + "\n Wheat : " + wheat
                        + "\n Food : " + food;
}

public void Form1_Load(object sender, EventArgs e)
{ 
    LblRessources.Text = ressourcesText;
}

LblRessources的文本如何使用字符串ressourcesText?它通常是这样工作的。

您的代码的问题是ResSourceText是在ressources函数中本地声明的

在{}括号内声明的变量在括号末尾被销毁,称为局部变量

要解决此问题,可以将变量设置为全局变量:

string ressourcesText;
public void ressources()
{
    ressourcesText = "Ressources:"
                        + "\n Wood :" + wood
                        + "\n Stone : " + stone
                        + "\n Wheat : " + wheat
                        + "\n Food : " + food;
}

public void Form1_Load(object sender, EventArgs e)
{ 
    LblRessources.Text = ressourcesText;
}
现在这不一定是好的做法,因为在声明变量时,它将为null,因此在调用resources之前不能使用

另一种选择是通过ressources函数返回变量,并直接调用它来检索值,如下所示:

public string ressources()
{
    string ressourcesText = "Ressources:"
                        + "\n Wood :" + wood
                        + "\n Stone : " + stone
                        + "\n Wheat : " + wheat
                        + "\n Food : " + food;
    return ressourcesText;
}

public void Form1_Load(object sender, EventArgs e)
{ 
    LblRessources.Text = ressources();
}
这样比较安全

有关更多信息,请查看以下链接:


你需要仔细阅读术语范围的含义。。如果不在方法之外将变量声明为public,则无法访问resourcesText`编译程序时编译器会告诉您什么。。?您需要将resources的方法从void更改为string,并返回resourcesText或将其分配给一个变量,以便在返回中赋值..我找不到规范。阅读本文,您的变量是在方法中定义的,因此超出范围,并在方法完成执行后收集。您需要在更高的范围内定义变量。在本例中,您创建了一个类级变量,该变量可由类中的所有方法读取/写入。