Rango e índices en C# 8.0

Como ya sabemos sobre el Rango y los Índices . Los usamos varias veces en nuestros programas, proporcionan una sintaxis corta para representar o acceder a un solo elemento o un rango de elementos de la secuencia o colecciones dadas. En este artículo, aprenderemos qué se agregó recientemente en el rango y los índices en C# 8.0. En C# 8.0, se agregan las siguientes cosas nuevas en el rango y los índices:

1. Dos nuevos tipos :

  • System.Range : representa un subrango de la secuencia o colección dada.
  • System.Index : representa un índice en la secuencia o colección dada.

2. Dos nuevos operadores :

  • ^ Operador: Se le conoce como índice por el operador final. Devuelve un índice relativo al final de la secuencia o colección. Es la forma más compacta y fácil de encontrar los elementos finales en comparación con los métodos anteriores.
    // Old Method
    var lastval = myarr[myarr.Length-1]
    
    // New Method
    var lastval = myarr[^1]
    

    Ejemplo:

    // C# program to illustrate the use 
    // of the index from end operator(^)
    using System;
      
    namespace example {
      
    class GFG {
      
        // Main Method
        static void Main(string[] args)
        {
            // Creating and initializing an array
            int[] myarr = new int[] {34, 56, 77, 88, 90, 45};
      
            // Simple getting the index value
            Console.WriteLine("Values of the specified indexes:");
            Console.WriteLine(myarr[0]);
            Console.WriteLine(myarr[1]);
            Console.WriteLine(myarr[2]);
            Console.WriteLine(myarr[3]);
            Console.WriteLine(myarr[4]);
            Console.WriteLine(myarr[5]);
      
            // Now we use index from end(^) 
            // operator with the given index
            // This will return the end value
            // which is related to the specified
            // index
            Console.WriteLine("The end values of the specified indexes:");
            Console.WriteLine(myarr[^1]);
            Console.WriteLine(myarr[^2]);
            Console.WriteLine(myarr[^3]);
            Console.WriteLine(myarr[^4]);
            Console.WriteLine(myarr[^5]);
            Console.WriteLine(myarr[^6]);
        }
    }
    }

    Producción:

    Values of the specified indexes:
    34
    56
    77
    88
    90
    45
    The end values of the specified indexes:
    45
    90
    88
    77
    56
    34
    

    Explicación: En el ejemplo anterior, tenemos una array de tipo int denominada myarr . Aquí, primero simplemente obtenemos los valores del índice especificado que es:

    34, 56, 77, 88, 90, 45
    Index : Value
     [0]  : 34
     [1]  : 56
     [2]  : 77
     [3]  : 88
     [4]  : 90
     [5]  : 45
    
    

    Ahora encontramos el último valor del índice especificado con la ayuda del operador ^ que es:

    Index : Value
     [^1]  : 45
     [^2]  : 90
     [^3]  : 88
     [^4]  : 77
     [^5]  : 56
     [^6]  : 34
    

    Puntos importantes:

    • El funcionamiento de este operador es similar a myarr[arr.Length].
    • No está permitido usar myarr[^0] si usa esto, entonces esto generará un error porque el índice final comienza desde ^1, no desde ^0 como se muestra en el siguiente ejemplo:

      Ejemplo:

      // C# program to illustrate the use 
      // of the index from end operator(^)
      using System;
        
      namespace example {
        
      class GFG {
        
          // Main Method
          static void Main(string[] args)
          {
              // Creating and initializing an array
              int[] myarr = new int[] {34, 56,
                              77, 88, 90, 45};
        
              // Simply getting the index value
              Console.WriteLine("Values of the specified index:");
              Console.WriteLine(myarr[0]);
        
              // Now we use index from end(^)
              // operator with the given index
              // This will return the end value
              // which is related to the specified
              // index
              Console.WriteLine("The end values of the specified index:");
              Console.WriteLine(myarr[^0]);
          }
      }
      }

      Producción:

      Valores del índice especificado:
      34
      Los valores finales del índice especificado:
      excepción no controlada. System.IndexOutOfRangeException: el índice estaba fuera de los límites de la array.
      en example.Program.Main(String[] args) en /Users/anki/Projects/example/example/Program.cs:line 22

    • Puede usar el índice como una variable y colocar esta variable entre corchetes []. Como se muestra en el siguiente ejemplo:

      Ejemplo:

      // C# program to illustrate how
      // to declare a index as a variable
      using System;
         
      namespace example {
         
      class GFG {
         
          // Main Method
          static void Main(string[] args)
          {
         
              // Creating and initializing an array
              int[] number = new int[] {1, 2, 3, 4,
                                    5, 6, 7, 8, 9};
         
              // Declare an index
              // as a variable
              Index i = ^6;
              var val = number[i];
         
              // Displaying number
              Console.WriteLine("Number: " + val);
          }
      }
      }

      Producción:

      Number: 4
  • .. Operador: Se le conoce como operador de rango. Y especifica el inicio y el final como sus operandos del rango dado. Es la forma más compacta y fácil de encontrar el rango de los elementos de la secuencia o colección especificada en comparación con los métodos anteriores.
    // Old Method
    var arr = myemp.GetRange(1, 5);
    
    // New Method
    var arr = myemp[2..3]
    

    Ejemplo:

    // C# program to illustrate the 
    // use of the range operator(..)
    using System;
       
    namespace example {
       
    class GFG {
       
        // Main Method
        static void Main(string[] args)
        {
            // Creating and initializing an array
            string[] myemp = new string[] {"Anu", "Priya", "Rohit"
                        "Amit", "Shreya", "Rinu", "Sumit", "Zoya"};
       
            Console.Write("Name of the employees in project A: ");
            var P_A = myemp[0..3];
            foreach(var emp1 in P_A)
                Console.Write($" [{emp1}]");
       
            Console.Write("\nName of the employees in project B: ");
            var P_B = myemp[3..5];
            foreach(var emp2 in P_B)
                Console.Write($" [{emp2}]");
       
            Console.Write("\nName of the employees in project C: ");
                var P_C = myemp[1..^2];
                foreach (var emp3 in P_C)
                    Console.Write($" [{emp3}]");
       
            Console.Write("\nName of the employees in project D: ");
            var P_D = myemp[..];
            foreach(var emp4 in P_D)
                Console.Write($" [{emp4}]");
       
            Console.Write("\nName of the employees in project E: ");
            var P_E = myemp[..2];
            foreach(var emp5 in P_E)
                Console.Write($" [{emp5}]");
       
            Console.Write("\nName of the employees in project F: ");
            var P_F = myemp[6..];
            foreach(var emp6 in P_F)
                Console.Write($" [{emp6}]");
       
            Console.Write("\nName of the employees in project G: ");
            var P_G = myemp[^3.. ^ 1];
            foreach(var emp7 in P_G)
                Console.Write($" [{emp7}]");
        }
    }
    }

    Producción:

    Name of the employees in project A:  [Anu] [Priya] [Rohit]
    Name of the employees in project B:  [Amit] [Shreya]
    Name of the employees in project C:  [Priya] [Rohit] [Amit] [Shreya] [Rinu]
    Name of the employees in project D:  [Anu] [Priya] [Rohit] [Amit] [Shreya] [Rinu] [Sumit] [Zoya]
    Name of the employees in project E:  [Anu] [Priya]
    Name of the employees in project F:  [Sumit] [Zoya]
    Name of the employees in project G:  [Rinu] [Sumit]
    

    Puntos importantes:

    • Cuando crea un rango usando el operador de rango, entonces no agregará el último elemento. Por ejemplo, tenemos una array {1, 2, 3, 4, 5, 6}, ahora queremos imprimir range[1..3], luego imprimirá 2, 3. No imprime 2, 3, 4.
    • En Range, si un rango contiene un índice inicial y final como Range[start, end], estos tipos de rangos se conocen como rango acotado.
    • En Rango, si un rango contiene solo un índice inicial y final o no contiene índices iniciales y finales como Rango[inicio..], o Rango[..fin], o Rango[..], entonces tales tipos de rangos son conocido como el rango ilimitado.
    • Se le permite usar el rango como una variable y este lugar variable entre corchetes []. Como se muestra en el siguiente ejemplo:

      Ejemplo:

      // C# program to illustrate how to
      // declare a range as a variable
      using System;
         
      namespace example {
         
      class GFG {
         
          // Main Method
          static void Main(string[] args)
          {
         
              // Creating and initializing an array
              int[] number = new int[] {1, 2, 3, 4,
                                    5, 6, 7, 8, 9};
         
              Console.Write("Number: ");
         
              // Declaring a range as a variable
              Range num = 1..3;
              int[] val = number[num];
         
              // Displaying number
              foreach(var n in val)
                  Console.Write($" [{n}]");
          }
      }
      }

      Producción:

      Number:  [2] [3]
      

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *