31
loading...
This website collects cookies to deliver better user experience
System.Index
, System.Range
and cover appropriate operators: ^
and ..
.var languages = new string[] { "Spanish", "English", "Japanese", "French", "German", "Russian", "Italian", "Korean", "Chinese" };
int index = 1;
var english = languages[index];
Console.WriteLine(english); // Output: English
int
variable we can use Index
type for doing the same:Index index1 = 1;
var english2 = languages[index1];
Console.WriteLine(english2);
Index
is value type so when we do new Index()
it will set the default value to 0
var index2 = new Index(); // zero by default because this is a structure
var spanish = languages[index2];
Console.WriteLine(spanish);
var index3 = new Index(2);
var japanese = languages[index3];
Console.WriteLine(japanese);
1
. (because of the first element has the index 0
that's way the last element has the index last element - 1
)var lastIndex1 = languages.Length - 1;
var chinese1 = languages[lastIndex1];
Console.WriteLine(chinese1);
Index lastIndex2 = ^1;
var chinese2 = languages[lastIndex2];
Console.WriteLine(chinese2);
Console.WriteLine(languages[languages.Length - 2]); // Korean
Console.WriteLine(languages[^2]); // Korean
Index
has overwritten method Equals
so we can check the equality of the two indexes.var equals = index1.Equals(index2);
Console.WriteLine(equals); // false
list.Skip(5).Take(2)
. With the addition of System.Span<T>
and other similar types, it becomes more important to have this kind of operation supported on a deeper level in the language/runtime and have the interface unified...
is a binary infix operator that accepts two expressions, or both expressions can be omitted.Range myRange1 = 1..4;
Index start = 1;
Index end = 4;
Range myRange2 = start..end;
1
, 2
and 3
elements from array:string[] languagesRange = languages[1..4];
foreach (var language in languagesRange)
{
Console.WriteLine(language);
}
string[] languagesRange1 = languages[^3..];
string[] languagesRange2 = languages[..^1];
string[] languagesRange3 = languages[^4..^1];
Span
Span<string> languagesSpan = languages;
Span<string> selectedLanguagesSpan = languagesSpan[1..4];
foreach (var language in selectedLanguagesSpan)
{
Console.WriteLine(language);
}