Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.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#_List_Object_Types_Equality - Fatal编程技术网

C# 检查对象列表中是否有任何相同类型的对象?

C# 检查对象列表中是否有任何相同类型的对象?,c#,list,object,types,equality,C#,List,Object,Types,Equality,我有一个从类型派生的对象列表(X和Y从A派生) List List=新列表() { 新的X(), 新的Y(), }; 我有一个从类型派生的对象。Z对象 我想检查类型是否相等,如果列表对象类型中有与Z对象相同的类型 我如何才能像这样编写代码?您只需按照建议的副本编写即可: bool containsOfTypeZ = list.OfType<Z>().Any(); 那么X,Y,Z是从A推导出来的?你想检查Z对象是否在a的列表中?类型Z是在编译时固定的还是在运行时动态确定的?还有一个

我有一个从类型派生的对象列表(X和Y从A派生)

List List=新列表()
{
新的X(),
新的Y(),
};
我有一个从类型派生的对象。Z对象

我想检查类型是否相等,如果列表对象类型中有与Z对象相同的类型
我如何才能像这样编写代码?

您只需按照建议的副本编写即可:

bool containsOfTypeZ = list.OfType<Z>().Any();

那么X,Y,Z是从A推导出来的?你想检查Z对象是否在a的列表中?类型Z是在编译时固定的还是在运行时动态确定的?还有一个问题:类型必须精确匹配还是派生类型可以?示例:如果列表包含从Z派生的ZZ类型的对象,它是否匹配?@KlausGütter可以在运行时确定。顺便说一下,我的对象类型不支持任何接口,如IEnumerable等。@KlausGütter我的类型是否必须完全匹配-->是。
FirstOrDefault()!=null
可以简化为
Any()
不需要使用where或类型Z的实例,您只需使用如下列表中的linq即可;或者
list.Any(a=>a是Z)
,如果您也需要查找从
Z
派生的任何内容,这将很有帮助。顺便说一下,我的对象类型不支持任何接口,比如IEnumerableetc@thepasserby没关系。。。我们对
列表
实例进行操作
Z
可以是任何
class
类型,甚至
struct
enum
delegate
等。因此Linq扩展方法作用于
IEnumerable
bool containsOfTypeZ = list.OfType<Z>().Any();
var someType = someInstance.GetType();
bool containsOfSomeRuntimeType = list.Any(o => o.GetType() == someType);