繁体   English   中英

是否可以使用变量作为类成员的标识符

[英]is it possible to use a variable as identifier of a class member

我正在处理一个 windows 窗体项目,我有一个这样的 Person 类(简化):

    class Person
    { public string name;
      public int age;

         public Person(string nameInput,int ageInput)
         {
            name=nameInput;
            age = ageInput;
         }
     }

现在我想启动类的一些成员,但我想使用输入作为成员的标识符,如下所示:

Person someTextBox.Text = new Person(name.Text,age.Text);

因为我不知道用户想要创建多少人,我不知道他想如何称呼他们我不能做一些像

Person p1 = new Person();
Person p2 = new Person();
Person p3 = new Person();
...

标识符很重要,因为我想创建一个下拉列表,用户可以在其中选择他声明的人员并获取显示的年龄等信息

问题是它不能将“someTextBox.Text”识别为变量而是字符串

通过覆盖Person类上的ToString() ,您可以返回有关相关Person的特定属性,例如全名:

public override string ToString()
{
    return $"{First} {Last}";
}

因此,当设置ComboBoxDataSource时,它使用ToString因为我们没有直接指定DisplayMember用作下拉列表中的可见字符串

在这里我正在加载一个ComboBox

public List<Person> People { get; set; }

private void Form1_Load(object sender, EventArgs e)
{
    People = new List<Person>()
    {
        new Person() {First = "Frank", Last = "Wright"},
        new Person() {First = "Omega", Last = "Man"}
    };

    cbPeople.DataSource = people;
}

所以当我启动页面时,我看到:

在此处输入图片说明


这是我完整的Person课程

public class Person
{
    public string First { get; set; }
    public string Last { get; set; }

    public override string ToString()
    {
        return $"{First} {Last}";
    }

}

如何检索选定的

注意事项是什么明确的ComboBox具有与用户选择的项目,它存储的参考People项目,并返回它SelectedItem或通过一些SelectedIndex 因此,如果我想要上一个示例中当前选定的项目,我会这样做:

var mySelectedPerson = cbPeople.SelectedItem;

var name = mySelectedPerson.ToString(); // "Frank Wright" 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM