是否可以使用变量作为 class 成员的标识符
is it possible to use a variable as identifier of a class member
我正在处理 windows 表单项目
我有一个人 Class 像这样(简化):
class Person
{ public string name;
public int age;
public Person(string nameInput,int ageInput)
{
name=nameInput;
age = ageInput;
}
}
现在我想启动 class 的一些成员,但我想像这样使用输入作为成员的标识符:
Person someTextBox.Text = new Person(name.Text,age.Text);
因为我不知道用户想要创建多少个人,也不知道他想怎么称呼他们,所以我不能只是想像
Person p1 = new Person();
Person p2 = new Person();
Person p3 = new Person();
...
标识符很重要,因为我想制作一个下拉列表,用户可以在其中 select 他声明的人并获得显示的年龄等信息
问题是它无法将“someTextBox.Text”识别为变量,而是识别字符串
通过覆盖 Person
class 上的 ToString()
,您可以 return 有关 Person
的特定属性,例如全名:
public override string ToString()
{
return $"{First} {Last}";
}
所以当设置 ComboBox
的 DataSource
时它使用 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
class
public class Person
{
public string First { get; set; }
public string Last { get; set; }
public override string ToString()
{
return $"{First} {Last}";
}
}
如何检索所选内容
请注意,要明确 ComboBox
作为用户选择的项目的内容,它存储了对 People
项目的引用,并将其 return 保存在 SelectedItem
中或通过 SelectedIndex
中的数字。因此,如果我想要上一个示例中的当前选定项,我会这样做:
var mySelectedPerson = cbPeople.SelectedItem;
var name = mySelectedPerson.ToString(); // "Frank Wright"
我正在处理 windows 表单项目 我有一个人 Class 像这样(简化):
class Person
{ public string name;
public int age;
public Person(string nameInput,int ageInput)
{
name=nameInput;
age = ageInput;
}
}
现在我想启动 class 的一些成员,但我想像这样使用输入作为成员的标识符:
Person someTextBox.Text = new Person(name.Text,age.Text);
因为我不知道用户想要创建多少个人,也不知道他想怎么称呼他们,所以我不能只是想像
Person p1 = new Person();
Person p2 = new Person();
Person p3 = new Person();
...
标识符很重要,因为我想制作一个下拉列表,用户可以在其中 select 他声明的人并获得显示的年龄等信息
问题是它无法将“someTextBox.Text”识别为变量,而是识别字符串
通过覆盖 Person
class 上的 ToString()
,您可以 return 有关 Person
的特定属性,例如全名:
public override string ToString()
{
return $"{First} {Last}";
}
所以当设置 ComboBox
的 DataSource
时它使用 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
class
public class Person
{
public string First { get; set; }
public string Last { get; set; }
public override string ToString()
{
return $"{First} {Last}";
}
}
如何检索所选内容
请注意,要明确 ComboBox
作为用户选择的项目的内容,它存储了对 People
项目的引用,并将其 return 保存在 SelectedItem
中或通过 SelectedIndex
中的数字。因此,如果我想要上一个示例中的当前选定项,我会这样做:
var mySelectedPerson = cbPeople.SelectedItem;
var name = mySelectedPerson.ToString(); // "Frank Wright"