Contains
Contains扩展方法的重载可以和Any扩展方法的重载配合。Contains使用IComparable代替断言来寻找一个符合条件特定的值。
还有一个Contains的重载允许一个指定的不同于默认或者类型的IEqualityComparer<T>的实现,方便自定义队列使用。
DefaultIfEmpty
DefaultIfEmpty扩展方法将在source sequence(源队列)为空时返回一个单一值。根据使用方法的不同,要么是所提供的值为默认值,要么是类型自身的默认值。如果类型不是空的,那么所有值都将被传递。
下面的例子中源队列有值,所以DefaultIfEmpty传递了所有的值:
如过源队列是空的,我们要么使用类型的默认值(例如int类型为0),或者像下面的例子中那样使用42来作为默认值。
ElementAt
ElementAt方法允许根据index来获取值,像IEnumerable<T>一样,它的index从0开始:
我们无法检查可观测物队列的长度,因为方法有可能会出现问题。如果我们要获取的个数超出了队列的长度,result队列将会在发出ArgumentOutOfRangeException错误后完毕。我们有三种避免出错的方式:
- 正确的处理错误。
- 使用Skip(指定的超过长度的index).Take(1),这样如果长度足够,可以忽略前面的指定个元素而获取到想要获取的元素(因为index从0开始),而如果长度不够则只会得到一个空队列,但没有错误。
- 使用ElementAtOrDefault扩展方法。ElementAtOrDefault方法可以在index超出长度时返回类型的默认值,目前没有提供自己设置默认值的重载。
SequenceEqual
SequenceEqual方法允许比较两个可观测物队列,每有一个源队列产生值,就与另一个队列的缓存进行比较,以确保两个队列有相同的值、相同的顺序并且长度也相同。这意味着当源队列产生不同的值的同时结果队列将返回false,又或者当两个队列所有值都相同并同时完成后返回true。
暂无关于此日志的评论。