小编典典

C#从另一个方法引用变量

c#

我是 C#的 新手,我真的需要知道如何从其他方法调用/使用字符串。

例如:

public void button1_Click(object sender, EventArgs e)
{ 
    string a = "help";
}

public void button2_Click(object sender, EventArgs e)
{
    //this is where I need to call the string "a" value from button1_click 
    string b = "I need ";
    string c = b + a;          
}

因此,在此示例中,我需要从函数中调用函数中定义的字符串“ abutton1_Click()``button2_Click()

谢谢!!


阅读 734

收藏
2020-05-19

共1个答案

小编典典

通常, 您会将其作为参数传递,如下所示:

void Method1()
{
    var myString = "help";
    Method2(myString);
}

void Method2(string aString)
{
    var myString = "I need ";
    var anotherString = myString + aString;
}

但是 ,示例中的方法是事件侦听器。您通常不直接致电他们。(我想您 可以 ,但是我从未找到一个 应该
这样做的实例。)因此,在这种特殊情况下,将值存储在类中的公共位置以供两种方法使用会更为谨慎。像这样:

string StringA { get; set; }

public void button1_Click(object sender, EventArgs e)
{ 
   StringA = "help";
}

public void button2_Click(object sender, EventArgs e)
{
    string b = "I need ";
    string c = b + StringA;
}

但是请注意,这在ASP.NET中的行为将非常不同。因此,如果这就是您正在使用的内容,那么您可能希望将其更进一步。其行为不同的原因是服务器端是“无状态的”。因此,来自客户端的每个按钮单击都将导致该类的全新实例。因此,在第二个按钮单击事件处理程序中使用它时,不会在第一个按钮单击事件处理程序中设置该类级成员。

在这种情况下,您将需要查看Web应用程序中的持久状态。选项包括:

  1. 页面值(例如,隐藏字段)
  2. 饼干
  3. 会话变量
  4. 应用变量
  5. 数据库
  6. 服务器端文件
  7. 在服务器端保留数据的其他方法,等等。
2020-05-19