繁体   English   中英

输入类型以进行检查

[英]Pass in Type to check against

我有一种方法,正在检查循环中的当前对象是否与传递给该方法的类型相同。

首先,我将类型作为字符串传递给方法,然后使用:

item.GetType().ToString().Equals(myType);

我真正想做的是使用is关键字来做:

item is myType

我遇到的问题是将myType传递给方法。 我是否需要使用某种时髦的泛型类型? 我将类型的引用传递为哪种类型?

您可以使用普通的等于运算符:

item.GetType() == myType;

如果item是myType描述的确切类型,则将返回true 请注意,如果有任何区别,它将返回false

class A { }
class B : A { }

B item = new B();
Type myType = typeof(A);
bool sameType = item.GetType() == myType; // this will be false

有关Type对象的一件好事是可以在文档中找到以下文本

表示Type对象是唯一的; 也就是说,两个Type对象引用在且仅当它们表示相同类型时才引用同一对象。 这允许使用引用相等性比较Type对象。

您的意思是:

    public List<T> GetItemsOfType<T>(List<object> allObjects)
    {
        return allObjects.Where(o => o is T).Cast<T>().ToList();
    }

然后你会用类似的东西打电话给你

var result = GetItemsOfType<MyType>(myObjects);

是这样吗

public static bool ContainsType<T>()
{
    object[] objects = new object[] { };

    foreach (var o in objects)
    {
        if (o is T)
        {
            return true;
        }
    }

    return false;
}

public static void Main(string[] args)
{
    ContainsType<int>();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM