将数组对象的参数输出为字符串

本文关键字:输出 字符串 参数 数组 对象 | 更新日期: 2023-09-27 18:37:27

我有以下代码:

public partial class Form1 : Form
{
    const int MaxStudents = 4;
    public Form1()
    {
        InitializeComponent();
    }
   private void Form1_Load(object sender, EventArgs e)
   {
     Student[] studentList;
     studentList = new Student[4];
     studentList[0] = new Student(51584, 17);
     studentList[1] = new Student(51585, 19);
     studentList[2] = new Student(51586, 15);
     studentList[3] = new Student(51587, 20);
        for (int i = 0; i < MaxStudents; i++)
        {
            lstStudents.Items.Add(studentList.ToString()[i]);
        }
    }

编辑:在学生班中,我有:

public Student(int id, int age) {
this.id = id;
this.age = age;
}
public override string ToString()
{
    return string.Format("ID: {0} - Age: {1}", this.id, this.age);
} 

然后以我的形式加载:

private void Form1_Load(object sender, EventArgs e)
{
Student[] studentList;
studentList = new Student[4];
studentList[0] = new Student(51584, 17);
studentList[1] = new Student(51585, 19);
studentList[2] = new Student(51586, 15);
studentList[3] = new Student(51587, 20);
lstStudents.Items.AddRange(studentList);
}

我想知道如何将数组中每个对象的参数输出到列表框。我将如何使每个对象都像这样显示在列表框中:

编号: 51584 - 年龄: 17

我不太确定如何将参数转换为要在列表框中列出的纯文本,同时在参数之前添加其他文本(就像我对"id:",连字符和"年龄:"所做的那样)

很抱歉这个冗长的问题,但我想我会尽我所能解释。

将数组对象的参数输出为字符串

如果您希望在需要字符串值时随时以这种方式显示Student,最简单的方法是覆盖ToString

public override string ToString()
{
    return string.Format("Name: {0} - Age: {1}", this.Name, this.Age);
} 

然后你可以做

lstStudents.Items.Add(studentList[i]);

添加对象而不是字符串的好处是,列表框的 SelectedItem 属性将是对象,而不仅仅是字符串表示形式。

或者,您可以设置发送到列表框的字符串的格式:

lstStudents.Items.Add(string.Format("Name: {0} - Age: {1}", studentList[i].Name, studentList[i].Age));

仔细看看这一行:

lstStudents.Items.Add(studentList.ToString()[i]);

你写studentList.ToString()[i].这意味着您拨打ToString studentList而不是学生。它应该是lstStudents.Items.Add(studentList[i].ToString())的(索引器[i]放在studentList后面)。

假设您覆盖了Student类中的ToString,您可以在一次调用中添加所有学生:

private void Form1_Load(object sender, EventArgs e)
{
    Student[] studentList;
    studentList = new Student[4];
    studentList[0] = new Student(51584, 17);
    studentList[1] = new Student(51585, 19);
    studentList[2] = new Student(51586, 15);
    studentList[3] = new Student(51587, 20);
    lstStudents.Items.AddRange(studentList);
}
// Class student - create property
public string Display
{
   get { return string.Format("ID: {0} - Age: {1}", this.ID, this.Age); }
} 
 // In the form class - set listbox
 lstStudents.Datasource = StudentArray;
 lstStudents.DisplayMember = "Display";
 lstStudents.ValueMember = "ID";
 // The benefit of this is that later you can do this
 Student s = (Student)lstStudents.SelectedItem
 // Now you have access to full student info