我有一个方法:
public static bool ItemsIntersectOrFirstIsEmpty<T>(IEnumerable<T> source, IEnumerable<T> target)
{
if (source.Any())
{
return source.Intersect(target).Any();
}
else
{
return true;
}
}
我看到你可以将一个类型传递给Intersect(),所以第一个条件中的返回行是:
return source.Intersect<T>(target).Any();
与原始代码有什么不同?
答案 0 :(得分:7)
明确指定参数类型完全没有区别; source
是IEnumerable<T>
而Intersect<T>()
需要IEnumerable<T>
,因此编译器需要parameter type can be inferred,而不需要明确定义它。
如果您愿意,您当然可以包含参数类型,但有时这会使代码噪音更大/更难阅读。如果您要明确所有参数类型,则该方法看起来像
public static bool ItemsIntersectOrFirstIsEmpty<T>(IEnumerable<T> source, IEnumerable<T> target)
{
if (source.Any<T>())
{
return source.Intersect<T>(target).Any<T>();
}
else
{
return true;
}
}