C# 如何从列表中访问对象<&燃气轮机;

C# 如何从列表中访问对象<&燃气轮机;,c#,C#,我想创建一个对象列表来存储来宾的基本信息,并有一些类似的代码 private void btnSave_Click(object sender, EventArgs e) { int gender; string fn; string ln; string num; int bd; int bm; int by; IList<GuestInfo> GuestList = new List<GuestInfo>

我想创建一个对象列表来存储来宾的基本信息,并有一些类似的代码

private void btnSave_Click(object sender, EventArgs e)
{
    int gender;
    string fn;
    string ln;
    string num;
    int bd;
    int bm;
    int by;

    IList<GuestInfo> GuestList = new List<GuestInfo>();
    if(tbBirthDate.Text==null||tbBirthMonth==null||tbBirthYear==null||tbFname==null||tbLName==null||tbPhoneNum==null)
    {
        MessageBox.Show("Please fill in all information");
    }
    else if (count>=4)
    {
        MessageBox.Show("You already have 4 members infomation save");
    }
    else
    {
        if(radFemale.Checked == true)
        {
            gender = 0;
        }
        else
        {
            gender = 1;
        }
        fn = tbFname.Text;
        ln = tbLName.Text;
        num = tbPhoneNum.Text;
        bd = Int32.Parse(tbBirthDate.Text);
        bm = Int32.Parse(tbBirthMonth.Text);
        by = Int32.Parse(tbBirthYear.Text);
        GuestList.Add(new GuestInfo(fn,ln,num,gender,bd,bm,by));                
        }
    }
}

单击按钮时,我存储信息,但我不知道如何获取我想要使用的数据,例如我想知道GuestList[1]上来宾的名字。

您的字段设置为
private
,因此您只能在
GuestInfo
类中访问它们。要解决此问题,必须将修饰符设置为
public

public string fName;
公开

该类型或成员可由同一程序集或引用它的另一程序集中的任何其他代码访问

私人

类型或成员只能由同一类或结构中的代码访问

建议: 在
GuestInfo
类中生成属性,而不是字段

  • 属性不是封装字段所必需的,它们可以对其他字段进行计算,或用于其他目的
  • 您还可以在访问属性时执行其他逻辑,例如验证,这是另一个有用的功能
(通常:属性公开字段。字段应该(几乎总是)对类保持私有,并通过get和set属性访问)

设置这样的属性以访问每个属性:

class GuestInfo
{
    public string fName { get; private set; }

    public GuestInfo(string FirstName)
    {
        fName = FirstName;
    }
}
然后您可以访问它们:

List<GuestInfo> guestList = new List<GuestInfo>();
guestList.Add(new GuestInfo("John"));
guestList.Add(new GuestInfo("Bill"));

var secondGuest = guestList[1].fName;
List guestList=newlist();
添加(新的GuestInfo(“John”));
添加(新的访客信息(“账单”);
var secondGuest=guestList[1]。fName;

您是否尝试在
访客列表[1]
之后放置
您是否有试图检索访客列表的代码?由于您正在事件本身中声明和初始化列表,因此
访客列表[1]
中不会有任何内容。此对象将在触发事件并退出后立即销毁。因此,首先需要在表单类之后的顶部创建
列表。接下来就是抓取的问题了。不要在你想要的时候说ArrayListList@un-lucky属性公开字段。字段应该(几乎总是)对类保持私有,并通过get和set属性进行访问。@un lucky添加了更多信息以提供更清晰的内容。。谢谢你的详细帖子,继续这样做
List<GuestInfo> guestList = new List<GuestInfo>();
guestList.Add(new GuestInfo("John"));
guestList.Add(new GuestInfo("Bill"));

var secondGuest = guestList[1].fName;