Sdcb.System.Range 1.0.3

Provide System.Index, System.Range for C# 8.0.

Install-Package Sdcb.System.Range -Version 1.0.3
dotnet add package Sdcb.System.Range --version 1.0.3
<PackageReference Include="Sdcb.System.Range" Version="1.0.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Sdcb.System.Range --version 1.0.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Index example:

var last = ^1;
int[] arr = { 1, 2, 3 };
int lastItem = arr[last];
Console.WriteLine(lastItem); // 3

int lastItem2 = arr[arr.Length - 1];
Console.WriteLine(lastItem2); // 3

Range example:

// Old school: 
string text1 = "the quick brown fox jumped over the lazy dogs";
string lazyDogs1 = text1.Substring(36, 9);
string lazyDogs2 = text1.Substring(text1.Length - 9, 9);

// Range style: 
string lazyDogs3 = text1[^9..^0];  // lazy dogs

// lazyDogs4 is exactly the same as lazyDogs3
var start = ^9;
var end = ^0;
var range = Range.Create(start, end);
string lazyDogs4 = text1.Substring(range);

// Other usages:
string lazyDogs5 = text1[^9..];  // Range.FromStart
string lazyDogs6 = text1[36..]; // Range.FromStart
string thequick = text1[..9]; // Range.ToEnd
string completeString = text1[..]; // Range.All

// Ranges with array: 
var arr = new[] { 1, 4, 8, 11, 19, 31 };
var range = arr[2..5];
ref int elt = ref range[1];
elt = 42;
int copiedelement = range[1];
copiedelement = 11;
Console.WriteLine($"the original element is changed: {arr[3]}"); // 42

Index example:

var last = ^1;
int[] arr = { 1, 2, 3 };
int lastItem = arr[last];
Console.WriteLine(lastItem); // 3

int lastItem2 = arr[arr.Length - 1];
Console.WriteLine(lastItem2); // 3

Range example:

// Old school: 
string text1 = "the quick brown fox jumped over the lazy dogs";
string lazyDogs1 = text1.Substring(36, 9);
string lazyDogs2 = text1.Substring(text1.Length - 9, 9);

// Range style: 
string lazyDogs3 = text1[^9..^0];  // lazy dogs

// lazyDogs4 is exactly the same as lazyDogs3
var start = ^9;
var end = ^0;
var range = Range.Create(start, end);
string lazyDogs4 = text1.Substring(range);

// Other usages:
string lazyDogs5 = text1[^9..];  // Range.FromStart
string lazyDogs6 = text1[36..]; // Range.FromStart
string thequick = text1[..9]; // Range.ToEnd
string completeString = text1[..]; // Range.All

// Ranges with array: 
var arr = new[] { 1, 4, 8, 11, 19, 31 };
var range = arr[2..5];
ref int elt = ref range[1];
elt = 42;
int copiedelement = range[1];
copiedelement = 11;
Console.WriteLine($"the original element is changed: {arr[3]}"); // 42

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
1.0.3 412 11/20/2018
1.0.2 115 11/15/2018
1.0.1 128 11/15/2018
1.0.0 132 11/15/2018