我有一个通用的功能,我想知道如何写。
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;
}
答案 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,这样您就可以定义两个对象在什么情况下是相等的。