C# 从列表元素c获取类型
我有一个C列表框,里面充满了类Human的元素。 每个元素都可以属于一个从人类派生的类,例如Old、Young。 我想知道在列表框中选择的元素是否旧。 我尝试使用.GetType,但它返回了类型字符串,因为它是一个列表 元素,而我想要的类型是Old或Young 提前感谢您可以使用 您可以使用:C# 从列表元素c获取类型,c#,listbox,gettype,C#,Listbox,Gettype,我有一个C列表框,里面充满了类Human的元素。 每个元素都可以属于一个从人类派生的类,例如Old、Young。 我想知道在列表框中选择的元素是否旧。 我尝试使用.GetType,但它返回了类型字符串,因为它是一个列表 元素,而我想要的类型是Old或Young 提前感谢您可以使用 您可以使用: 根据OP的要求,没有必要在IsOld之外进行测试,尽管她不需要测试这些。我想知道在列表框中选择的元素是否旧。任何比塞尔曼的答案更重要的东西似乎都有点过分。@DeeMac:好吧,我忽略了他只对老人感兴趣。但
根据OP的要求,没有必要在IsOld之外进行测试,尽管她不需要测试这些。我想知道在列表框中选择的元素是否旧。任何比塞尔曼的答案更重要的东西似乎都有点过分。@DeeMac:好吧,我忽略了他只对老人感兴趣。但我保留原样,以防OP改变主意。谢谢!!两个答案都可以,但我需要的只是知道它是否老了。不管怎样,蒂姆的解决方案没有编译,但可能是我的代码错误。@user3876331:你得到了什么错误?你有没有看到我在20分钟前编辑了我的答案?第一个是LINQ查询,其中至少需要VS2008。
bool isOld = (listBox.SelectedItem as Old) != null;
var query = myListBox.Items.Cast<Human>()
.Select(h => new { IsOld = h is Old, IsYoung = h is Young, Human = h });
Human human = (Human) myListBox.SelectedItem;
bool isOld = human is Old;