初始化数组引用的字符串数组

时间:2016-12-06 12:58:31

标签: c#

我尝试做的就是为填充列表框的所有内容保存一个参考键列表。将有未知数量的线(用户/"患者")。保存列表后,我希望能够使用列表框索引查找相应的键,并使用它来继续下一部分。

public partial class PatientList : Window
{
    HumanResources ListAllPatients;
    List<PatientInformation> AllPatients;
    string[] Usernames;

    public PatientList()
    {
        InitializeComponent();
        int i = 0;
        string[] Usernames = new string[i];
        ListAllPatients = new HumanResources();
        AllPatients = ListAllPatients.PopPatientList();

        foreach (PatientInformation PatientChoice in AllPatients)
        {
            Usernames[i] = PatientChoice.Username;
            lboxPatients.Items.Add(string.Format("{0} {1}; {2}", PatientChoice.FirstName, PatientChoice.LastName, PatientChoice.Gender));
            i += 1;
        }
    }

以下是将您带到下一部分的按钮的代码

public void btnSelectPatient_Click(object sender, RoutedEventArgs e)
    {
        PatientInfo PatientInfoWindow = new PatientInfo();
        PatientInfoWindow.Show();
        //i = lboxPatients.SelectedIndex;
        //UserFactory.CurrentUser = Usernames2[i];
        this.Close();
    }

我的问题是:我相信我已经初始化了一个字符串数组来执行此操作,但VS一直告诉我它没有被分配,并且将始终保持为空。

我的问题:我如何以及在何处正确初始化字符串数组(或更好的东西)以完成从PatientList()到btnSelectPatient的密钥发送?

2 个答案:

答案 0 :(得分:0)

初始化string[]字段,而是构造函数中的局部变量:

string[] Usernames;

public PatientList()
{
    InitializeComponent();
    int i = 0;
    string[] Usernames = new string[i];

您必须将此数组分配给字段:

public PatientList()
{
    InitializeComponent();
    int i = 0;
    this.Usernames = new string[i];

但目前没有多大意义,因为它的长度总是为0.

也许你想要这个:

public PatientList()
{
    InitializeComponent();
    ListAllPatients = new HumanResources();
    AllPatients = ListAllPatients.PopPatientList();
    this.Usernames = new string[AllPatients.Count];

    int i = 0;
    foreach (PatientInformation PatientChoice in AllPatients)
    {
        Usernames[i] = PatientChoice.Username;
        lboxPatients.Items.Add(string.Format("{0} {1}; {2}", PatientChoice.FirstName, PatientChoice.LastName, PatientChoice.Gender));
        i += 1;
    }
}

答案 1 :(得分:0)

你有一些错误:

  • 您初始化一个新的局部变量而不是类级变量,因为您再次声明它(string[] userNames = ...
  • 您初始化一个长度为0的数组。当您尝试将项目添加到位置1及以上时,这将失败。

我的建议是使用List,因为它更适合动态长度列表,而且您不需要自己跟踪索引,它会自动添加到正确的索引中:

HumanResources ListAllPatients;
List<PatientInformation> AllPatients;
List<string> Usernames = new List<string>();

public PatientList()
{
    InitializeComponent();
    ListAllPatients = new HumanResources();
    AllPatients = ListAllPatients.PopPatientList();

    foreach (PatientInformation PatientChoice in AllPatients)
    {
        Usernames.Add(PatientChoice.Username);
        lboxPatients.Items.Add(string.Format("{0} {1}; {2}", PatientChoice.FirstName, PatientChoice.LastName, PatientChoice.Gender));
    }
}