bma*_*ay2 1 c# linq generics types
我有一个方法:
public static bool ItemsIntersectOrFirstIsEmpty<T>(IEnumerable<T> source, IEnumerable<T> target)
{
if (source.Any())
{
return source.Intersect(target).Any();
}
else
{
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
我看到你可以将一个类型传递给Intersect(),所以第一个条件中的返回行是:
return source.Intersect<T>(target).Any();
Run Code Online (Sandbox Code Playgroud)
这与我原来的代码会有什么不同?
明确指定参数类型根本没有区别; source是一个IEnumerable<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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |