/
GeekNerd
/
ServerModelingProject
Обзор
Документация
Войти
/
GeekNerd
/
ServerModelingProject
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Assets/Plugins/UniTask/Runtime/Linq/Skip.cs
69 строк
2 KB
Gorney-Alex
Init
30 май 2026, 19:05
30 май 2026, 19:05
3cdcc49
Код
Авторство
О чём код?
using Cysharp.Threading.Tasks.Internal; using System; using System.Threading; namespace Cysharp.Threading.Tasks.Linq { public static partial class UniTaskAsyncEnumerable { public static IUniTaskAsyncEnumerable<TSource> Skip<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Int32 count) { Error.ThrowArgumentNullException(source, nameof(source)); return new Skip<TSource>(source, count); } } internal sealed class Skip<TSource> : IUniTaskAsyncEnumerable<TSource> { readonly IUniTaskAsyncEnumerable<TSource> source; readonly int count; public Skip(IUniTaskAsyncEnumerable<TSource> source, int count) { this.source = source; this.count = count; } public IUniTaskAsyncEnumerator<TSource> GetAsyncEnumerator(CancellationToken cancellationToken = default) { return new _Skip(source, count, cancellationToken); } sealed class _Skip : AsyncEnumeratorBase<TSource, TSource> { readonly int count; int index; public _Skip(IUniTaskAsyncEnumerable<TSource> source, int count, CancellationToken cancellationToken) : base(source, cancellationToken) { this.count = count; } protected override bool TryMoveNextCore(bool sourceHasCurrent, out bool result) { if (sourceHasCurrent) { if (count <= checked(index++)) { Current = SourceCurrent; result = true; return true; } else { result = default; return false; } } else { result = false; return true; } } } } }