如果变量是在不同的方法中声明的,我如何在一个方法中使用它?C#
因此,我试图找出“重用”以前方法中的变量的最简单方法,但却找不到确切的方法 基本上,我有一个简单的程序,使用openFileDialog打开一个文本文件(只需单击一个按钮)。在另一个按钮中,单击它,将我写入的内容写入文件 我遇到的问题是编写文件,因为我无法重用方法1中的path变量:/ 这是我的密码:如果变量是在不同的方法中声明的,我如何在一个方法中使用它?C#,c#,variables,methods,C#,Variables,Methods,因此,我试图找出“重用”以前方法中的变量的最简单方法,但却找不到确切的方法 基本上,我有一个简单的程序,使用openFileDialog打开一个文本文件(只需单击一个按钮)。在另一个按钮中,单击它,将我写入的内容写入文件 我遇到的问题是编写文件,因为我无法重用方法1中的path变量:/ 这是我的密码: public void button1_Click(object sender, EventArgs e) { OpenFileDialog OFD = new
public void button1_Click(object sender, EventArgs e)
{
OpenFileDialog OFD = new OpenFileDialog();
OFD.Title = "Choose a Plain Text File";
OFD.Filter = "Text File | *.txt";
OFD.ShowDialog();
string filePath = OFD.FileName;
if (OFD.FileName != "") {
using (StreamReader reader = new StreamReader(@filePath))
{
while (!reader.EndOfStream)
{
richTextBox1.AppendText(reader.ReadLine());
}
reader.Close();
}
}
}
public string filePath;
public void button2_Click(object sender, EventArgs e)
{
using (StreamWriter writer = new StreamWriter(@filePath)){
writer.WriteLine(richTextBox1.Text);
writer.Close();
}
}
将其设置为实例变量
string path = "";
public void FirstMethod()
{
path = "something";
}
public void SecondMethod()
{
doSomething(path);
}
将其设置为实例变量
string path = "";
public void FirstMethod()
{
path = "something";
}
public void SecondMethod()
{
doSomething(path);
}
在您的方法中,只需删除声明字符串filePath,使其看起来像
filePath = OFD.FileName;
这就是方法中的全部内容,只需删除声明字符串filePath,使其看起来像
filePath = OFD.FileName;
这就是你不能在你发布的代码中添加的所有内容,因为它超出了范围并且消失了 您可以让第一个方法返回选择,然后将其传递给第二个方法。那就行了 我不喜欢你的方法名<代码>按钮2\u单击<代码>按钮1\u单击?没有人告诉客户该方法的作用
你的方法可能做得太多了。我可能有一种方法来选择文件,另一种方法用于读写。你不能在你发布的代码中使用,因为它超出了范围,已经消失了
public string filePath;
public void button1_Click(object sender, EventArgs e)
{
OpenFileDialog OFD = new OpenFileDialog();
OFD.Title = "Choose a Plain Text File";
OFD.Filter = "Text File | *.txt";
OFD.ShowDialog();
filePath = OFD.FileName;
if (OFD.FileName != "") {
using (StreamReader reader = new StreamReader(@filePath))
{
while (!reader.EndOfStream)
{
richTextBox1.AppendText(reader.ReadLine());
}
reader.Close();
}
}
}
public void button2_Click(object sender, EventArgs e)
{
// you should test a value of filePath (null, string.Empty)
using (StreamWriter writer = new StreamWriter(@filePath)){
writer.WriteLine(richTextBox1.Text);
writer.Close();
}
}
您可以让第一个方法返回选择,然后将其传递给第二个方法。那就行了
我不喜欢你的方法名<代码>按钮2\u单击<代码>按钮1\u单击?没有人告诉客户该方法的作用
你的方法可能做得太多了。我可能有一种方法来选择文件和单独的文件进行读写。按钮1\u单击中的
文件路径字符串声明字符串的一个新实例,该实例位于成员实例所在的范围内。删除字符串
类型,使方法中的文件路径
引用成员实例。很可能您也不需要emmeber实例是公共的,但应该是私有的,因为它允许这两种方法通信
public string filePath;
public void button1_Click(object sender, EventArgs e)
{
OpenFileDialog OFD = new OpenFileDialog();
OFD.Title = "Choose a Plain Text File";
OFD.Filter = "Text File | *.txt";
OFD.ShowDialog();
filePath = OFD.FileName;
if (OFD.FileName != "") {
using (StreamReader reader = new StreamReader(@filePath))
{
while (!reader.EndOfStream)
{
richTextBox1.AppendText(reader.ReadLine());
}
reader.Close();
}
}
}
public void button2_Click(object sender, EventArgs e)
{
// you should test a value of filePath (null, string.Empty)
using (StreamWriter writer = new StreamWriter(@filePath)){
writer.WriteLine(richTextBox1.Text);
writer.Close();
}
}
public void button1_Click(object sender, EventArgs e)
{
// etc.
filePath = OFD.FileName;
}
private string filePath;
单击按钮1中的文件路径
字符串声明了字符串
的一个新实例,该实例位于隐藏成员实例的范围内。删除字符串
类型,使方法中的文件路径
引用成员实例。很可能您也不需要emmeber实例是公共的,但应该是私有的,因为它允许这两种方法通信
public void button1_Click(object sender, EventArgs e)
{
// etc.
filePath = OFD.FileName;
}
private string filePath;
您已经声明了与类成员同名的局部变量,所以在方法中设置“filePath”时,只需设置局部“filePath”,而不是类成员“filePath”。在内部作用域(您的button1_Click方法)中使用相同类型和名称声明的变量总是对外部作用域(在这种情况下是您的类)隐藏这些变量。您已使用与类成员相同的名称声明了局部变量,因此当您在方法中设置“filePath”时,您只需设置局部“filePath”而不是类成员“filePath”。在内部作用域(您的button1_Click方法)中使用相同类型和名称声明的变量总是对外部作用域(在这种情况下是您的类)隐藏这些变量。如果您接受answer,则为n ice。如果您接受answer,则为n ice。