C# 如何使用;是";关键字与对象?

C# 如何使用;是";关键字与对象?,c#,as-keyword,C#,As Keyword,如何将is关键字用于对象,而不是对象的类 下面是一些代码: private bool IsObjectCompatableWithObjects(object obj, IEnumerable<object> objects) { foreach (var item in objects) { if (obj is item) { return true; } } return f

如何将
is
关键字用于对象,而不是对象的类

下面是一些代码:

private bool IsObjectCompatableWithObjects(object obj, IEnumerable<object> objects)
{
    foreach (var item in objects)
    {
        if (obj is item)
        {
            return true;
        }
    }
    return false;
}
private bool IsObjectCompatitablewithObjects(对象对象对象、IEnumerable对象)
{
foreach(对象中的变量项)
{
如果(obj是项目)
{
返回true;
}
}
返回false;
}
上述代码有以下错误:

找不到类型或命名空间名称“item”(是否缺少) 使用指令或组件引用?)


我猜你是想达到这样的目的

private bool IsObjectCompatibleWithObjects(object obj, IEnumerable<object> objects)
{
    return objects.Any(i => i.GetType().IsAssignableFrom(obj.GetType()));
}
输出:

True
True
False

is
用于
类型本身,而不是类型实例。因此,如果您需要检查项目是否为object类型,您可能应该编写-

if (item is Object)
而不是

 if (obj is item)
但是所有的东西都是
对象
,所以它没有什么帮助。如果只需检查列表中的类型If项是否与类型object相同,则应执行以下操作-

 if (item.GetType() == obj.GetType())

如果要查看对象是否包含在可枚举对象中,可以使用
System.Linq中的
enumerable.Contains

使用默认相等比较器确定序列是否包含指定元素

您可以这样使用它:

private static bool IsObjectCompatableWithObjects<T>(T obj, IEnumerable<T> objects)
{
    return objects.Contains(obj);
}
private static bool IsObjectCompatableWithObjects<T>(T obj, IEnumerable<T> objects)
{
    foreach (var item in objects)
    {
        if (obj.Equals(item))
        {
            return true;
        }
    }
    return false;
}
private static bool isobjectCompatitablewithobjects(T obj,IEnumerable objects)
{
返回objects.Contains(obj);
}
基本上,您正在做这样的事情:

private static bool IsObjectCompatableWithObjects<T>(T obj, IEnumerable<T> objects)
{
    return objects.Contains(obj);
}
private static bool IsObjectCompatableWithObjects<T>(T obj, IEnumerable<T> objects)
{
    foreach (var item in objects)
    {
        if (obj.Equals(item))
        {
            return true;
        }
    }
    return false;
}
private static bool isobjectCompatitablewithobjects(T obj,IEnumerable objects)
{
foreach(对象中的变量项)
{
如果(目标等于(项目))
{
返回true;
}
}
返回false;
}

您可以查找确切的实现。

是否要检查类型,或者查看列表中是否存在该对象?是否希望知道对象是否等于项,或者对象是否与项的类型相同?将if条件更改为if(obj.GetType()==item.GetType())从功能名称判断,op试图检查对象的类型是否符合对象序列。阅读
is
关键字