Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从列表元素c获取类型_C#_Listbox_Gettype - Fatal编程技术网

C# 从列表元素c获取类型

C# 从列表元素c获取类型,c#,listbox,gettype,C#,Listbox,Gettype,我有一个C列表框,里面充满了类Human的元素。 每个元素都可以属于一个从人类派生的类,例如Old、Young。 我想知道在列表框中选择的元素是否旧。 我尝试使用.GetType,但它返回了类型字符串,因为它是一个列表 元素,而我想要的类型是Old或Young 提前感谢您可以使用 您可以使用: 根据OP的要求,没有必要在IsOld之外进行测试,尽管她不需要测试这些。我想知道在列表框中选择的元素是否旧。任何比塞尔曼的答案更重要的东西似乎都有点过分。@DeeMac:好吧,我忽略了他只对老人感兴趣。但

我有一个C列表框,里面充满了类Human的元素。 每个元素都可以属于一个从人类派生的类,例如Old、Young。 我想知道在列表框中选择的元素是否旧。 我尝试使用.GetType,但它返回了类型字符串,因为它是一个列表 元素,而我想要的类型是Old或Young

提前感谢

您可以使用

您可以使用:


根据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;