如何从List<>访问对象

时间:2016-11-22 03:45:44

标签: c#

我想创建一个List<>一个对象来存储Guest的基本信息,并有一些类似的代码

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));                
        }
    }
}

GuestInfo:

class GuestInfo
{
    private string fName;
    private string lName;
    private string pNum;
    private int Gen;
    private int bDate;
    private int bMonth;
    private int bYear;

    public GuestInfo(string FirstName,string LastName, string phoneNum,int Gender, int birthDate,int birthMonth,int birthYear)
    {
        fName = FirstName;
        lName = LastName;
        pNum = phoneNum;
        Gen = Gender;
        bDate = birthDate;
        bMonth = birthDate;
        bYear = birthYear;

    }
}

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

1 个答案:

答案 0 :(得分: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;