What does the Type parameter in IEnumerable<T>.Interse

本文关键字:lt gt Interse IEnumerable the does Type parameter in What | 更新日期: 2023-09-27 18:25:49

我有一个方法:

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();

这与我原来的代码有何不同?

What does the Type parameter in IEnumerable<T>.Interse

明确指定参数类型没有任何区别;sourceIEnumerable<T>Intersect<T>()IEnumerable<T>,因此编译器可以推断参数类型,而无需显式定义。

当然,如果您愿意,可以包含参数类型,但有时这可能会使代码变得更嘈杂/更难读取。如果您要明确所有参数类型,该方法看起来像

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;
    }
}