C# 如何在WinForms应用程序中更改作用域以将变量从方法传递到对象发送者?

C# 如何在WinForms应用程序中更改作用域以将变量从方法传递到对象发送者?,c#,arrays,winforms,variables,scope,C#,Arrays,Winforms,Variables,Scope,我试图将变量从数组传递到按钮单击操作。我找不到设置作用域的方法,无法使其正常工作 我已经尝试将修饰符更改为public、private、static、void、string、string[]等 我还将WinForms应用程序中的所有对象设置为公共 public partial class AutoPay : Form { public AutoPay() { InitializeComponent(); } public void Header

我试图将变量从数组传递到按钮单击操作。我找不到设置作用域的方法,无法使其正常工作

我已经尝试将修饰符更改为public、private、static、void、string、string[]等

我还将WinForms应用程序中的所有对象设置为公共

public partial class AutoPay : Form
{

    public AutoPay()
    {
        InitializeComponent();
    }

    public void HeaderInformation(string dateAndTime, string fileNumber)
    {
        dateAndTime = DateTime.Now.ToString();
        fileNumber = txtFileNumber.Text;

   string[] headerArray = new string[2];
        headerArray[0] = dateAndTime;
        headerArray[1] = fileNumber;
    }

    public void BtnSave_Click(object sender, EventArgs e)
    {
        HeaderInformation(headerArray[0], headerArray[1]);
    }

}

BtnSave_Click操作下的headerArray[0]下面有一条红线,表示它超出了范围。

尝试将headerArray声明为类的属性。

尝试将headerArray声明为类的属性。

如前所述。。。您需要在方法外部声明headerArray。。。也。。。看起来您正在尝试在阵列具有信息之前向阵列添加信息。。。试着这样做(也有很多其他的方法;):


如前所述。。。您需要在方法外部声明headerArray。。。也。。。看起来您正在尝试在阵列具有信息之前向阵列添加信息。。。试着这样做(也有很多其他的方法;):


如果不使用而覆盖它,为什么要将
dateAndTime
fileNumber
传递给
标题信息
?如果只为方法创建一个数组,它对对象或环境的状态有什么影响?您也可以只删除
标题信息
并保留
BtnSave\u单击
为空或将其删除。结果似乎是一样的……你没有明确地“设置范围”。声明变量的位置决定了作用域。表单或类级别声明的内容将在表单/类中的任何位置都可用。方法(包括事件处理程序)中声明的内容仅在那里可用
headerArray
仅存在于
HeaderInformation
中,因为它是在那里声明的。如果您不使用它而覆盖它,为什么要将
dateAndTime
fileNumber
传递给
HeaderInformation
?如果只为方法创建一个数组,它对对象或环境的状态有什么影响?您也可以只删除
标题信息
并保留
BtnSave\u单击
为空或将其删除。结果似乎是一样的……你没有明确地“设置范围”。声明变量的位置决定了作用域。表单或类级别声明的内容将在表单/类中的任何位置都可用。方法(包括事件处理程序)中声明的内容仅在那里可用
headerArray
仅存在于
HeaderInformation
中,因为它是在那里声明的。
public partial class AutoPay : Form
{

  private string[] headerArray;   // <-- declare it here...

  public AutoPay()
  {
    InitializeComponent();

    headerArray = new string[2];  // <-- sometimes the normal way to initialize...
  }

  public void HeaderInformation(string dateAndTime, string fileNumber)
  {
    // reinitialize headerArray for safety....
    headerArray = new string[2];
    headerArray[0] = dateAndTime;
    headerArray[1] = fileNumber;
  }

  public void BtnSave_Click(object sender, EventArgs e)
  {
    HeaderInformation(DateTime.Now.ToString(), txtFileNumber.Text);
  }

}
public void HeaderInformation()
{
    // reinitialize headerArray for safety....
    headerArray = new string[2];
    headerArray[0] = DateTime.Now.ToString();
    headerArray[1] = txtFileNumber.Text;
}

public void BtnSave_Click(object sender, EventArgs e)
{
    HeaderInformation();
}