INDICI


INDICI
- È stata introdotta nel namespace System una nuova struct System.Index.
- È stato introdotto un nuovo operatore il cui simbolo è ^ chiamato (index from end) ossia indice a partire dalla fine.
RANGE
- È stata introdotta nel namespace System una nuova struct System.Range.
- È stato introdotto un nuovo operatore il cui simbolo è .. chiamato (range operator) che ci consente di prendere uno slice ossia una fetta di valori.
using System;
namespace IndiciRange
{
class Program
{
static void Main(string[] args)
{
//INDICI
string[] myArray = {"primo","secondo","terzo","quarto"};
Index primo = 0;
Index ultimo = ^1;
string x = myArray[primo];
string y = myArray[ultimo];
Console.WriteLine($"{x} {y}");
string s1 = myArray[^1];
string s2 = myArray[^2];
Console.WriteLine($"{s1} {s2}");
//RANGE
string[]a = myArray[..2];/*--partiamo dall'inizio dell'array
e ci fermiamo prima dell'indice specificato 2*/
foreach(var item in a)
{
Console.WriteLine(item);
}
string[]b = myArray[2..];/*--Parte dall'indice due compreso fino alla fine*/
foreach(var item in b)
{
Console.WriteLine(item);
}
string[]c = myArray[1..3];/*--Parte dall'indice 1 incluso fino all'indice 3 escluso*/
foreach(var item in c)
{
Console.WriteLine(item);
}
}
}
}
APPROFONDIMENTO
In C#, gli indici e i range sono funzionalità introdotte in C# 8.0 che permettono di lavorare con array e stringhe in modo più conveniente. Ecco una spiegazione dettagliata di come funzionano:
Indici
Gli indici rappresentano una posizione in una collezione (come un array o una stringa). In C#, gli indici possono essere sia positivi che negativi:
• Gli indici positivi iniziano da 0 (per il primo elemento) fino a length – 1 (per l'ultimo elemento).
• Gli indici negativi iniziano da -1 (per l'ultimo elemento) fino a -length (per il primo elemento).
C# introduce la struttura Index per rappresentare gli indici. Questa struttura offre un modo conveniente per accedere agli elementi dall'inizio o dalla fine della collezione.
Esempio:
int[] array = ;
Console.WriteLine(array[^1]); // Output: 5 (ultimo elemento)
Range
Un range rappresenta una sottosezione di una collezione. In C#, i range sono rappresentati dalla struttura Range, che utilizza due indici per specificare l'inizio e la fine del range.
Esempio:
int[] array = ;
int[] subArray = array[1..3]; // Contiene gli elementi da array[1] a array[2], escluso array[3]
foreach (var item in subArray)
Sintassi degli Indici e dei Range
• Per creare un indice dall'inizio della collezione: Index index = 0;
• Per creare un indice dalla fine della collezione: Index index = ^1;
• Per creare un range che include gli elementi dall'indice 1 all'indice 3 (escluso): Range range = 1..3;
• Per creare un range che include tutti gli elementi dall'indice 1 fino alla fine: Range range = 1..;
• Per creare un range che include tutti gli elementi dall'inizio fino all'indice 3 (escluso): Range range = ..3;
• Per creare un range che include tutti gli elementi: Range range = ..;
Esempi Pratici
Utilizzo di Indici
string text = "Hello, World!";
char lastChar = text[^1]; // Ottiene l'ultimo carattere '!'
char secondLastChar = text[^2]; // Ottiene il penultimo carattere 'd'
Console.WriteLine(lastChar); // Output: !
Console.WriteLine(secondLastChar); // Output: d
Utilizzo di Range
string text = "Hello, World!";
string subText = text[7..12]; // Ottiene la sottostringa "World"
Console.WriteLine(subText); // Output: World
int[] numbers = ;
int[] subArray = numbers[3..7]; // Ottiene gli elementi
foreach (var number in subArray)
Lascia un commento