我是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;
}
Run Code Online (Sandbox Code Playgroud)
所以在这个例子中我需要调用函数中函数中定义的字符串" a "button1_Click()button2_Click()
谢谢!!
Dav*_*vid 31
通常你会将它作为参数传递,如下所示:
void Method1()
{
var myString = "help";
Method2(myString);
}
void Method2(string aString)
{
var myString = "I need ";
var anotherString = myString + aString;
}
Run Code Online (Sandbox Code Playgroud)
但是,示例中的方法是事件侦听器.您通常不直接打电话给他们.(我想你可以,但是我从来没有找到一个应该的实例.)因此在这种特殊情况下,将值存储在类中的公共位置以供两种方法使用会更为谨慎.像这样的东西:
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;
}
Run Code Online (Sandbox Code Playgroud)
但请注意,这在ASP.NET中的表现会有很大差异.因此,如果您正在使用它,那么您可能希望更进一步.它表现不同的原因是因为服务器端是"无状态的".因此,来自客户端的每个按钮单击将导致该类的全新实例.因此,在第二个按钮单击事件处理程序中使用它时,不会反映在第一个按钮单击事件处理程序中设置该类级别成员.
在这种情况下,您需要查看Web应用程序中的持久状态.选项包括:
您需要string a在范围内声明class,而不是方法,此时它是"局部变量".
例:
private string a = string.Empty;
public void button1_Click(object sender, EventArgs e)
{
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;
}
Run Code Online (Sandbox Code Playgroud)
您现在可以a从class您的示例中的任何位置访问"私有字段"的值Form.
同意@Devid 的回答,但我更喜欢创建一类必需的实体,然后在整个解决方案中使用它们,而不将变量作为参数传递。
Classname.variableName;
Run Code Online (Sandbox Code Playgroud)
对于前-
Class argumentData{
public static string firstArg= string.Empty;
public static string secArg= string.Empty;
}
Run Code Online (Sandbox Code Playgroud)
假设我在函数中分配数据
void assignData()
{
argumentData.firstArg="hey";
argumentData.secArg="hello";
}
Run Code Online (Sandbox Code Playgroud)
如果我想在另一种方法中使用它,那么
void showData()
{
Console.WriteLine("first argument"+argumentData.firstArg);
Console.WriteLine("sec argument"+ argumentData.secArg);
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
96757 次 |
| 最近记录: |