IndexRange 1.0.2
dotnet add package IndexRange --version 1.0.2
NuGet\Install-Package IndexRange -Version 1.0.2
<PackageReference Include="IndexRange" Version="1.0.2" />
paket add IndexRange --version 1.0.2
#r "nuget: IndexRange, 1.0.2"
// Install IndexRange as a Cake Addin
#addin nuget:?package=IndexRange&version=1.0.2
// Install IndexRange as a Cake Tool
#tool nuget:?package=IndexRange&version=1.0.2
This package lets you use the C# 8.0 index and range features in projects that target .NET Framework or netstandard2.0
.
Using Range with Arrays
The C# compiler needs the RuntimeHelpers.GetSubArray<T>
method to be available to create subranges from arrays. This method is only available in netstandard2.1
and .NET Core 3.0, so creating subranges from arrays will fail to compile in .NET Framework.
Use Span<T>
A workaround is to add a reference to System.Memory and use Span<T>
. Not only does this compile, it's much more efficient as it doesn't create a new array and copy the sliced data to it:
int[] array = new[] { 1, 2, 3, 4, 5, 6 };
// don't do this:
// var slice = array[1..^1];
// do this:
var slice = array.AsSpan()[1..^1];
Define GetSubArray<T>
The other fix is to define the necessary method in your source code. Copy the following code into your project:
https://gist.github.com/bgrainger/fb2c18659c2cdfce494c82a8c4803360
That type is not in this NuGet package so that the C# compiler doesn't warn that The predefined type 'RuntimeHelpers' is defined in multiple assemblies
.
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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net35 is compatible. net40 was computed. net403 was computed. net45 is compatible. net451 was computed. net452 was computed. net46 was computed. net461 was computed. net462 was computed. net463 was computed. net47 is compatible. 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 | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 3.5
- ValueTupleBridge (>= 0.1.5)
-
.NETFramework 4.5
- System.ValueTuple (>= 4.5.0)
-
.NETFramework 4.7
- No dependencies.
-
.NETStandard 2.0
- No dependencies.
-
.NETStandard 2.1
- No dependencies.
NuGet packages (92)
Showing the top 5 NuGet packages that depend on IndexRange:
Package | Downloads |
---|---|
Semver
A SemVer implementation in .Net based on v2.0.0 of the spec found at http://semver.org |
|
EventStore.Client
The legacy TCP client API for Event Store. Get the open source or commercial versions of Event Store server from https://eventstore.com/ |
|
Stl
Stl ("ServiceTitan Library") is a collection of relatively small abstractions or methods we couldn't find in BCL. A part of Stl.Fusion. |
|
PhotoSauce.MagicScaler
High-Performance image processing pipeline for .NET. Implements best-of-breed algorithms, linear light processing, and sharpening for the best image resizing quality available. Speed, efficiency, and image quality are unmatched by anything else on the .NET platform. |
|
Stl.Net
Stl.Net - a set of helpers related to networking. |
GitHub repositories (18)
Showing the top 5 popular GitHub repositories that depend on IndexRange:
Repository | Stars |
---|---|
shouldly/shouldly
Should testing for .NET—the way assertions should be!
|
|
servicetitan/Stl.Fusion
Build real-time apps (Blazor included) with less than 1% of extra code responsible for real-time updates. Host 10-1000x faster APIs relying on transparent and nearly 100% consistent caching. We call it DREAM, or Distributed REActive Memoization, and it's here to turn real-time on!
|
|
SubnauticaNitrox/Nitrox
An open-source, multiplayer modification for the game Subnautica.
|
|
mysql-net/MySqlConnector
MySQL Connector for .NET
|
|
SamboyCoding/Cpp2IL
Work-in-progress tool to reverse unity's IL2CPP toolchain.
|
Version | Downloads | Last updated |
---|---|---|
1.0.2 | 237,164 | 4/14/2022 |
1.0.1 | 33,032 | 3/5/2022 |
1.0.1-beta.1 | 8,168 | 8/18/2021 |
1.0.0 | 472,212 | 10/4/2019 |
* Mark assembly as CLS compliant.