如何确定两个对象的类型是否兼容?

时间:2011-04-18 13:05:44

标签: c# generics types comparison compare

我有一个通用的功能,我想知道如何写。

List<Something> something;

public int countItems<T>(List<T> Items)
{
    // Here I would like to compare the type of "Items" with the type of "something" to see if they are compatible. How do I do it?
    return 0;
}

4 个答案:

答案 0 :(得分:9)

你的意思是:

if(typeof(T) == typeof(Something)) {...}

请注意,让泛型非常依赖于T(并采取不同的行为)可能意味着您尝试做的事实上并非非常泛型 ......

答案 1 :(得分:0)

if (something.GetType() == items.GetType()) ...

这将比较实际对象的类型。

答案 2 :(得分:0)

问题陈述不明确,而且有点模糊,但这可能会这样做:

using System.Linq;

public int countItems<T>(List<T> Items)
{
    return Items.OfType<Something>().Where(thing => thisOneCounts(thing)).Count();
}

答案 3 :(得分:-1)

我认为你想要的是使用IComparable界面。

您可能想要使用的另一个工具是operator overloading,这样您就可以定义两个对象在什么情况下是相等的