CLSS.ExtensionMethods.IEnumerator.LoopNext
1.0.0
Inconsistent syntax for non-generic enumerators.
See the version list below for details.
dotnet add package CLSS.ExtensionMethods.IEnumerator.LoopNext --version 1.0.0
NuGet\Install-Package CLSS.ExtensionMethods.IEnumerator.LoopNext -Version 1.0.0
<PackageReference Include="CLSS.ExtensionMethods.IEnumerator.LoopNext" Version="1.0.0" />
paket add CLSS.ExtensionMethods.IEnumerator.LoopNext --version 1.0.0
#r "nuget: CLSS.ExtensionMethods.IEnumerator.LoopNext, 1.0.0"
// Install CLSS.ExtensionMethods.IEnumerator.LoopNext as a Cake Addin #addin nuget:?package=CLSS.ExtensionMethods.IEnumerator.LoopNext&version=1.0.0 // Install CLSS.ExtensionMethods.IEnumerator.LoopNext as a Cake Tool #tool nuget:?package=CLSS.ExtensionMethods.IEnumerator.LoopNext&version=1.0.0
CLSS.ExtensionMethods.IEnumerator.LoopNext
Problem
Looping a collection indefinitely is an operation that maps well to many use cases (such as AI behavior phases, sequentially looping slideshow, infinite scrolling background, etc...), but since there is no native way to perform this type of loop, you have to write some non-obvious code to do so.
var numbers = new int[] { 0, 1, 2, 3 };
int li = 0;
foreach (int i = 0; i < 10; ++i)
{
var number = numbers[li];
// do something wih number
++li;
if (li == numbers.Length) li = 0;
}
Solution
LoopNext
is an extension method that infinitely advances an enumerator in a loop. The above code segment can be rewritten as follows:
using CLSS;
var numbers = new int[] { 0, 1, 2, 3 };
var numbersEnumerator = numbers.GetEnumerator();
foreach (int i = 0; i < 10; ++i)
{
numbersEnumerator.LoopNext();
DoSomethingWith(numbersEnumerator.Current);
}
Because LoopNext
always returns true, the usual step of checking its result before accessing the Current
property can be skipped altogether.
Since it then becomes natural to call LoopNext
and accessing Current
back-to-back, this package also comes with a LoopNextElement
extension method that combines these 2 actions, moving to the next element in a loop directly:
using CLSS;
DoSomethingWith(numbersEnumerator.LoopNextElement());
You can visualize LoopNextElement
as "popping off" one object from the front end of an infinite queue (that lazily evaluates).
This package is a part of the C# Language Syntactic Sugar suite.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
.NET Core | netcoreapp1.0 was computed. netcoreapp1.1 was computed. netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard1.0 is compatible. netstandard1.1 was computed. netstandard1.2 was computed. netstandard1.3 was computed. netstandard1.4 was computed. netstandard1.5 was computed. netstandard1.6 was computed. netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net45 was computed. net451 was computed. net452 was computed. net46 was computed. net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen30 was computed. tizen40 was computed. tizen60 was computed. |
Universal Windows Platform | uap was computed. uap10.0 was computed. |
Windows Phone | wp8 was computed. wp81 was computed. wpa81 was computed. |
Windows Store | netcore was computed. netcore45 was computed. netcore451 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 1.0
- NETStandard.Library (>= 1.6.1)
-
.NETStandard 2.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on CLSS.ExtensionMethods.IEnumerator.LoopNext:
Package | Downloads |
---|---|
CLSS.ExtensionMethods.IEnumerable.Looping
An extension method create an enumerable that infinitely loops over a collection. A part of the C# Language Syntactic Sugar suite. |
GitHub repositories
This package is not used by any popular GitHub repositories.