IndexOutOfRangeException Třída

Definice

Výjimka, která je vyvolána při pokusu o přístup k prvku pole nebo kolekce s indexem, který je mimo rozsah.The exception that is thrown when an attempt is made to access an element of an array or collection with an index that is outside its bounds.

public ref class IndexOutOfRangeException sealed : SystemException
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public sealed class IndexOutOfRangeException : SystemException
type IndexOutOfRangeException = class
    inherit SystemException
Public NotInheritable Class IndexOutOfRangeException
Inherits SystemException
Dědičnost
IndexOutOfRangeException
Atributy

Poznámky

IndexOutOfRangeException Výjimka je vyvolána, když je použit neplatný index pro přístup ke členu pole nebo kolekce nebo ke čtení nebo zápisu z konkrétního umístění ve vyrovnávací paměti.An IndexOutOfRangeException exception is thrown when an invalid index is used to access a member of an array or a collection, or to read or write from a particular location in a buffer. Tato výjimka dědí z třídy Exception , ale nepřidává žádné jedinečné členy.This exception inherits from the Exception class but adds no unique members.

Obvykle je výjimka vyvolána v důsledku chyby vývojáře. IndexOutOfRangeExceptionTypically, an IndexOutOfRangeException exception is thrown as a result of developer error. Namísto zpracování výjimky byste měli diagnostikovat příčinu chyby a opravit kód.Instead of handling the exception, you should diagnose the cause of the error and correct your code. Mezi nejběžnější příčiny této chyby patří:The most common causes of the error are:

  • Forgetting, že horní mez kolekce nebo pole založeného na nule je menší než počet členů nebo prvků, jak ukazuje následující příklad.Forgetting that the upper bound of a collection or a zero-based array is one less than its number of members or elements, as the following example illustrates.

    using System;
    using System.Collections.Generic;
    
    public class Example
    {
       public static void Main()
       {
          List<Char> characters = new List<Char>();
          characters.InsertRange(0, new Char[] { 'a', 'b', 'c', 'd', 'e', 'f' } );
          for (int ctr = 0; ctr <= characters.Count; ctr++)
             Console.Write("'{0}'    ", characters[ctr]);
       }
    }
    // The example displays the following output:
    //    'a'    'b'    'c'    'd'    'e'    'f'
    //    Unhandled Exception: 
    //    System.ArgumentOutOfRangeException: 
    //    Index was out of range. Must be non-negative and less than the size of the collection.
    //    Parameter name: index
    //       at Example.Main()
    
    Imports System.Collections.Generic
    
    Module Example
       Public Sub Main()
          Dim characters As New List(Of Char)()
          characters.InsertRange(0, { "a"c, "b"c, "c"c, "d"c, "e"c, "f"c} )
          For ctr As Integer = 0 To characters.Count
             Console.Write("'{0}'    ", characters(ctr))
          Next
       End Sub
    End Module
    ' The example displays the following output:
    '    'a'    'b'    'c'    'd'    'e'    'f'
    '    Unhandled Exception: 
    '    System.ArgumentOutOfRangeException: 
    '    Index was out of range. Must be non-negative and less than the size of the collection.
    '    Parameter name: index
    '       at System.Collections.Generic.List`1.get_Item(Int32 index)
    '       at Example.Main()
    

    Chcete-li chybu opravit, můžete použít kód podobný následujícímu.To correct the error, you can use code like the following.

    using System;
    using System.Collections.Generic;
    
    public class Example
    {
       public static void Main()
       {
          List<Char> characters = new List<Char>();
          characters.InsertRange(0, new Char[] { 'a', 'b', 'c', 'd', 'e', 'f' } );
          for (int ctr = 0; ctr < characters.Count; ctr++)
             Console.Write("'{0}'    ", characters[ctr]);
       }
    }
    // The example displays the following output:
    //        'a'    'b'    'c'    'd'    'e'    'f'
    
    Imports System.Collections.Generic
    
    Module Example
       Public Sub Main()
          Dim characters As New List(Of Char)()
          characters.InsertRange(0, { "a"c, "b"c, "c"c, "d"c, "e"c, "f"c} )
          For ctr As Integer = 0 To characters.Count - 1
             Console.Write("'{0}'    ", characters(ctr))
          Next
       End Sub
    End Module
    ' The example displays the following output:
    '       'a'    'b'    'c'    'd'    'e'    'f'
    

    Namísto iterování všech prvků v poli podle jejich indexu můžete použít foreach příkaz (in C#) nebo For Each příkaz (v Visual Basic).Alternately, instead of iterating all the elements in the array by their index, you can use the foreach statement (in C#) or the For Each statement (in Visual Basic).

  • Došlo k pokusu o přiřazení prvku pole k jinému poli, které nebylo dostatečně rozměrem a které má méně prvků než původní pole.Attempting to assign an array element to another array that has not been adequately dimensioned and that has fewer elements than the original array. Následující příklad se pokusí přiřadit poslední prvek v value1 poli ke stejnému prvku value2 v poli.The following example attempts to assign the last element in the value1 array to the same element in the value2 array. value2 Pole bylo ale nesprávně dimenzováno na šest, nikoli sedm prvků.However, the value2 array has been incorrectly dimensioned to have six instead of seven elements. V důsledku toho přiřazení vyvolá IndexOutOfRangeException výjimku.As a result, the assignment throws an IndexOutOfRangeException exception.

    public class Example
    {
       public static void Main()
       {
          int[] values1 = { 3, 6, 9, 12, 15, 18, 21 };
          int[] values2 = new int[6];
          
          // Assign last element of the array to the new array.
          values2[values1.Length - 1] = values1[values1.Length - 1];
       }
    }
    // The example displays the following output:
    //       Unhandled Exception: 
    //       System.IndexOutOfRangeException: 
    //       Index was outside the bounds of the array.
    //       at Example.Main()
    
    Module Example
       Public Sub Main()
          Dim values1() As Integer = { 3, 6, 9, 12, 15, 18, 21 }
          Dim values2(5) As Integer
          
          ' Assign last element of the array to the new array.
          values2(values1.Length - 1) = values1(values1.Length - 1)
       End Sub
    End Module
    ' The example displays the following output:
    '       Unhandled Exception: 
    '       System.IndexOutOfRangeException: 
    '       Index was outside the bounds of the array.
    '       at Example.Main()
    
  • Použití hodnoty vrácené metodou hledání k iterování části pole nebo kolekce počínaje konkrétní indexovou pozicí.Using a value returned by a search method to iterate a portion of an array or collection starting at a particular index position. Pokud zapomenete ověřit, zda operace hledání nalezla shodu, modul runtime vyvolá IndexOutOfRangeException výjimku, jak je znázorněno v tomto příkladu.If you forget to check whether the search operation found a match, the runtime throws an IndexOutOfRangeException exception, as shown in this example.

    using System;
    using System.Collections.Generic;
    
    public class Example
    {
       static List<int> numbers = new List<int>();
    
       public static void Main()
       {
          int startValue; 
          string[] args = Environment.GetCommandLineArgs();
          if (args.Length < 2) 
             startValue = 2;
          else 
             if (! Int32.TryParse(args[1], out startValue))
                startValue = 2;
    
          ShowValues(startValue);
       }
       
       private static void ShowValues(int startValue)
       {   
          // Create a collection with numeric values.
          if (numbers.Count == 0)  
             numbers.AddRange( new int[] { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22} );
    
          // Get the index of a startValue.
          Console.WriteLine("Displaying values greater than or equal to {0}:",
                            startValue);
          int startIndex = numbers.IndexOf(startValue);
          // Display all numbers from startIndex on.
          for (int ctr = startIndex; ctr < numbers.Count; ctr++)
             Console.Write("    {0}", numbers[ctr]);
       }
    }
    // The example displays the following output if the user supplies
    // 7 as a command-line parameter:
    //    Displaying values greater than or equal to 7:
    //    
    //    Unhandled Exception: System.ArgumentOutOfRangeException: 
    //    Index was out of range. Must be non-negative and less than the size of the collection.
    //    Parameter name: index
    //       at System.Collections.Generic.List`1.get_Item(Int32 index)
    //       at Example.ShowValues(Int32 startValue)
    //       at Example.Main()
    
    Imports System.Collections.Generic
    
    Module Example
       Dim numbers As New List(Of Integer)
    
       Public Sub Main()
          Dim startValue As Integer 
          Dim args() As String = Environment.GetCommandLineArgs()
          If args.Length < 2 Then
             startValue = 2
          Else
             If Not Int32.TryParse(args(1), startValue) Then
                startValue = 2
             End If   
          End If
          ShowValues(startValue)
       End Sub
       
       Private Sub ShowValues(startValue As Integer)   
          ' Create a collection with numeric values.
          If numbers.Count = 0 Then 
             numbers.AddRange( { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22} )
          End If   
          ' Get the index of a particular number, in this case 7.
          Console.WriteLine("Displaying values greater than or equal to {0}:",
                            startValue)
          Dim startIndex As Integer = numbers.IndexOf(startValue)
          ' Display all numbers from startIndex on.
          For ctr As Integer = startIndex To numbers.Count - 1
             Console.Write("    {0}", numbers(ctr))
          Next
       End Sub
    End Module
    ' The example displays the following output if the user supplies
    ' 7 as a command-line parameter:
    '    Displaying values greater than or equal to 7:
    '    
    '    Unhandled Exception: System.ArgumentOutOfRangeException: 
    '    Index was out of range. Must be non-negative and less than the size of the collection.
    '    Parameter name: index
    '       at System.Collections.Generic.List`1.get_Item(Int32 index)
    '       at Example.ShowValues(Int32 startValue)
    '       at Example.Main()
    

    V tomto případě List<T>.IndexOf metoda vrátí hodnotu-1, což je neplatná hodnota indexu, pokud se nenajde shoda.In this case, the List<T>.IndexOf method returns -1, which is an invalid index value, when it fails to find a match. Tuto chybu opravíte tak, že před iterací pole zkontrolujete návratovou hodnotu metody hledání, jak je znázorněno v tomto příkladu.To correct this error, check the search method's return value before iterating the array, as shown in this example.

    using System;
    using System.Collections.Generic;
    
    public class Example
    {
       static List<int> numbers = new List<int>();
    
       public static void Main()
       {
          int startValue; 
          string[] args = Environment.GetCommandLineArgs();
          if (args.Length < 2) 
             startValue = 2;
          else 
             if (! Int32.TryParse(args[1], out startValue))
                startValue = 2;
    
          ShowValues(startValue);
       }
       
       private static void ShowValues(int startValue)
       {   
          // Create a collection with numeric values.
          if (numbers.Count == 0)  
             numbers.AddRange( new int[] { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22} );
    
          // Get the index of startValue.
          int startIndex = numbers.IndexOf(startValue);
          if (startIndex < 0) {
             Console.WriteLine("Unable to find {0} in the collection.", startValue);
          }
          else {
             // Display all numbers from startIndex on.
             Console.WriteLine("Displaying values greater than or equal to {0}:",
                            startValue);
             for (int ctr = startIndex; ctr < numbers.Count; ctr++)
                Console.Write("    {0}", numbers[ctr]);
          }
       }
    }
    // The example displays the following output if the user supplies
    // 7 as a command-line parameter:
    //      Unable to find 7 in the collection.
    
    Imports System.Collections.Generic
    
    Module Example
       Dim numbers As New List(Of Integer)
    
       Public Sub Main()
          Dim startValue As Integer 
          Dim args() As String = Environment.GetCommandLineArgs()
          If args.Length < 2 Then
             startValue = 2
          Else
             If Not Int32.TryParse(args(1), startValue) Then
                startValue = 2
             End If   
          End If
          ShowValues(startValue)
       End Sub
       
       Private Sub ShowValues(startValue As Integer)   
          ' Create a collection with numeric values.
          If numbers.Count = 0 Then 
             numbers.AddRange( { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22} )
          End If   
          ' Get the index of startValue.
          Dim startIndex As Integer = numbers.IndexOf(startValue)
          If startIndex < 0 Then
             Console.WriteLine("Unable to find {0} in the collection.", startValue)
          Else
             ' Display all numbers from startIndex on.
             Console.WriteLine("Displaying values greater than or equal to {0}:",
                            startValue)
             For ctr As Integer = startIndex To numbers.Count - 1
                Console.Write("    {0}", numbers(ctr))
             Next
          End If
       End Sub
    End Module
    ' The example displays the following output if the user supplies
    '       Unable to find 7 in the collection.
    
  • Pokus o použití nebo výčet sady výsledků dotazu, kolekce nebo pole vrácených dotazem bez testování, zda vrácený objekt obsahuje jakákoli platná data.Trying to use or enumerate a result set, collection, or array returned by a query without testing whether the returned object has any valid data.

  • Pomocí vypočítané hodnoty můžete definovat počáteční index, koncový index nebo počet položek, které se mají iterovat.Using a computed value to define the starting index, the ending index, or the number of items to be iterated. Pokud je výsledek výpočtu neočekávaný, může dojít k IndexOutOfRangeException výjimce.If the result of the computation is unexpected, it might result in an IndexOutOfRangeException exception. Měli byste zkontrolovat logiku programu při výpočtu hodnoty indexu a ověřit hodnotu před iterací pole nebo kolekce.You should check your program's logic in calculating the index value and validate the value before iterating the array or collection. Všechny následující podmínky musí být pravdivé. v opačném případě je vyvolána výjimka:IndexOutOfRangeExceptionThe following conditions must all be true; otherwise, an IndexOutOfRangeException exception is thrown:

    • Počáteční index musí být větší nebo roven Array.GetLowerBound rozměru pole, které chcete iterovat, nebo je pro kolekci větší než nebo rovno 0.The starting index must be greater than or equal to Array.GetLowerBound for the dimension of the array that you want to iterate, or greater than or equal to 0 for a collection.

    • Koncový index nemůže překročit Array.GetUpperBound rozměr pole, které chcete iterovat, nebo nemůže být větší nebo roven Count vlastnosti kolekce.The ending index cannot exceed Array.GetUpperBound for the dimension of the array that you want to iterate, or cannot be greater than or equal to the Count property of a collection.

    • Následující rovnice musí být pravdivá pro dimenzi pole, které chcete iterovat:The following equation must be true for the dimension of the array that you want to iterate:

      start_index >= lower_bound And start_index + items_to_iterate - 1 <= upper_bound  
      

      V kolekci musí být následující rovnice pravdivá:For a collection, the following equation must be true:

      start_index >= 0 And start_index + items_to_iterate <= Count  
      

      Tip

      Počáteční index pole nebo kolekce nemůže nikdy být záporné číslo.The starting index of an array or collection can never be a negative number.

  • Za předpokladu, že pole musí být založené na nule.Assuming that an array must be zero-based. Pole, která nejsou založená na nule, mohou být vytvořena Array.CreateInstance(Type, Int32[], Int32[]) metodou a mohou být vrácena zprostředkovatelem komunikace s objekty COM, i když nejsou kompatibilní se specifikací CLS.Arrays that are not zero-based can be created by the Array.CreateInstance(Type, Int32[], Int32[]) method and can be returned by COM interop, although they aren't CLS-compliant. Následující příklad ukazuje IndexOutOfRangeException , který je vyvolána při pokusu o iteraci nenulového pole vytvořeného Array.CreateInstance(Type, Int32[], Int32[]) metodou.The following example illustrates the IndexOutOfRangeException that is thrown when you try to iterate a non-zero-based array created by the Array.CreateInstance(Type, Int32[], Int32[]) method.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          Array values = Array.CreateInstance(typeof(int), new int[] { 10 }, 
                                              new int[] { 1 });
          int value = 2;
          // Assign values.
          for (int ctr = 0; ctr < values.Length; ctr++) {
             values.SetValue(value, ctr);
             value *= 2;
          }
          
          // Display values.
          for (int ctr = 0; ctr < values.Length; ctr++)
             Console.Write("{0}    ", values.GetValue(ctr));
       }
    }
    // The example displays the following output:
    //    Unhandled Exception: 
    //    System.IndexOutOfRangeException: Index was outside the bounds of the array.
    //       at System.Array.InternalGetReference(Void* elemRef, Int32 rank, Int32* pIndices)
    //       at System.Array.SetValue(Object value, Int32 index)
    //       at Example.Main()
    
    Module Example
       Public Sub Main()
          Dim values = Array.CreateInstance(GetType(Integer), { 10 }, { 1 })
          Dim value As Integer = 2
          ' Assign values.
          For ctr As Integer = 0 To values.Length - 1
             values(ctr) = value
             value *= 2
          Next
          
          ' Display values.
          For ctr As Integer = 0 To values.Length - 1
             Console.Write("{0}    ", values(ctr))
          Next
       End Sub
    End Module
    ' The example displays the following output:
    '    Unhandled Exception: 
    '    System.IndexOutOfRangeException: Index was outside the bounds of the array.
    '       at System.Array.InternalGetReference(Void* elemRef, Int32 rank, Int32* pIndices)
    '       at System.Array.SetValue(Object value, Int32 index)
    '       at Microsoft.VisualBasic.CompilerServices.NewLateBinding.ObjectLateIndexSetComplex(Obje
    '    ct Instance, Object[] Arguments, String[] ArgumentNames, Boolean OptimisticSet, Boolean RV
    '    alueBase)
    '       at Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateIndexSet(Object Instance,
    '    Object[] Arguments, String[] ArgumentNames)
    '       at Example.Main()
    

    Chcete-li chybu opravit, jak je uvedeno v následujícím příkladu, můžete zavolat GetLowerBound metodu namísto vystavení odhadu počátečního indexu pole.To correct the error, as the following example does, you can call the GetLowerBound method instead of making assumptions about the starting index of an array.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          Array values = Array.CreateInstance(typeof(int), new int[] { 10 }, 
                                              new int[] { 1 });
          int value = 2;
          // Assign values.
          for (int ctr = values.GetLowerBound(0); ctr <= values.GetUpperBound(0); ctr++) {
             values.SetValue(value, ctr);
             value *= 2;
          }
          
          // Display values.
          for (int ctr = values.GetLowerBound(0); ctr <= values.GetUpperBound(0); ctr++)
             Console.Write("{0}    ", values.GetValue(ctr));
       }
    }
    // The example displays the following output:
    //        2    4    8    16    32    64    128    256    512    1024
    
    Module Example
       Public Sub Main()
          Dim values = Array.CreateInstance(GetType(Integer), { 10 }, { 1 })
          Dim value As Integer = 2
          ' Assign values.
          For ctr As Integer = values.GetLowerBound(0) To values.GetUpperBound(0)
             values(ctr) = value
             value *= 2
          Next
          
          ' Display values.
          For ctr As Integer = values.GetLowerBound(0) To values.GetUpperBound(0)
             Console.Write("{0}    ", values(ctr))
          Next
       End Sub
    End Module
    ' The example displays the following output:
    '       2    4    8    16    32    64    128    256    512    1024
    

    Všimněte si, že když zavoláte GetLowerBound metodu pro získání počátečního indexu pole, měli byste také Array.GetUpperBound(Int32) zavolat metodu pro získání jejího koncového indexu.Note that when you call the GetLowerBound method to get the starting index of an array, you should also call the Array.GetUpperBound(Int32) method to get its ending index.

  • Matoucí index a hodnotu v tomto indexu v číselném poli nebo kolekci.Confusing an index and the value at that index in a numeric array or collection. K tomuto problému obvykle dochází při použití foreach příkazu (in C#) nebo For Each příkazu (v Visual Basic).This issue usually occurs when using the foreach statement (in C#) or the For Each statement (in Visual Basic). Následující příklad ukazuje tento problém.The following example illustrates the problem.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          // Generate array of random values.
          int[] values = PopulateArray(5, 10);
          // Display each element in the array.
          foreach (var value in values)
             Console.Write("{0}   ", values[value]);
       }
    
       private static int[] PopulateArray(int items, int maxValue)
       {
          int[] values = new int[items];
          Random rnd = new Random();
          for (int ctr = 0; ctr < items; ctr++)
             values[ctr] = rnd.Next(0, maxValue + 1);   
    
          return values;                                                      
       }
    }
    // The example displays output like the following:
    //    6   4   4
    //    Unhandled Exception: System.IndexOutOfRangeException: 
    //    Index was outside the bounds of the array.
    //       at Example.Main()
    
    Module Example
       Public Sub Main()
          ' Generate array of random values.
          Dim values() As Integer = PopulateArray(5, 10)
          ' Display each element in the array.
          For Each value In values
             Console.Write("{0}   ", values(value))
          Next
       End Sub
       
       Private Function PopulateArray(items As Integer, 
                                      maxValue As Integer) As Integer()
          Dim values(items - 1) As Integer
          Dim rnd As New Random()
          For ctr As Integer = 0 To items - 1
             values(ctr) = rnd.Next(0, maxValue + 1)   
          Next    
          Return values                                                      
       End Function
    End Module
    ' The example displays output like the following:
    '    6   4   4
    '    Unhandled Exception: System.IndexOutOfRangeException: 
    '    Index was outside the bounds of the array.
    '       at Example.Main()
    

    Konstruktor iterace vrátí každou hodnotu v poli nebo kolekci, nikoli její index.The iteration construct returns each value in an array or collection, not its index. Chcete-li výjimku odstranit, použijte tento kód.To eliminate the exception, use this code.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          // Generate array of random values.
          int[] values = PopulateArray(5, 10);
          // Display each element in the array.
          foreach (var value in values)
             Console.Write("{0}   ", value);
       }
    
       private static int[] PopulateArray(int items, int maxValue)
       {
          int[] values = new int[items];
          Random rnd = new Random();
          for (int ctr = 0; ctr < items; ctr++)
             values[ctr] = rnd.Next(0, maxValue + 1);   
    
          return values;                                                      
       }
    }
    // The example displays output like the following:
    //        10   6   7   5   8
    
    Module Example
       Public Sub Main()
          ' Generate array of random values.
          Dim values() As Integer = PopulateArray(5, 10)
          ' Display each element in the array.
          For Each value In values
             Console.Write("{0}   ", value)
          Next
       End Sub
       
       Private Function PopulateArray(items As Integer, 
                                      maxValue As Integer) As Integer()
          Dim values(items - 1) As Integer
          Dim rnd As New Random()
          For ctr As Integer = 0 To items - 1
             values(ctr) = rnd.Next(0, maxValue + 1)   
          Next    
          Return values                                                      
       End Function
    End Module
    ' The example displays output like the following:
    '       10   6   7   5   8
    
  • Zadání neplatného názvu sloupce pro DataView.Sort vlastnost.Providing an invalid column name to the DataView.Sort property.

  • Porušení bezpečnosti vlákna.Violating thread safety. Operace, jako je čtení ze stejného StreamReader objektu, zápis do stejného StreamWriter objektu z více vláken nebo vytváření výčtu objektů v Hashtable různých vláknech, mohou vyvolat IndexOutOfRangeException , pokud objekt není dostupný v způsob bezpečného přístupu z více vláken.Operations such as reading from the same StreamReader object, writing to the same StreamWriter object from multiple threads, or enumerating the objects in a Hashtable from different threads can throw an IndexOutOfRangeException if the object isn't accessed in a thread-safe way. Tato výjimka je obvykle přerušovaná, protože spoléhá na spor.This exception is typically intermittent because it relies on a race condition.

Použití pevně zakódovaných hodnot indexu pro manipulaci s polem je zřejmě vyvolána výjimka, pokud je hodnota indexu nesprávná nebo neplatná, nebo pokud je velikost pole manipulace neočekávaná.Using hard-coded index values to manipulate an array is likely to throw an exception if the index value is incorrect or invalid, or if the size of the array being manipulation is unexpected. Chcete-li zabránit operaci v vyvolání IndexOutOfRangeException výjimky, můžete provést následující akce:To prevent an operation from throwing an IndexOutOfRangeException exception, you can do the following:

  • Iterujte prvky pole pomocí příkazu foreach (in C#) nebo for each... Další konstrukce (v Visual Basic) místo iterace elementů podle indexu.Iterate the elements of the array using the foreach statement (in C#) or the For Each...Next construct (in Visual Basic) instead of iterating elements by index.

  • Iterujte elementy podle indexu počínaje indexem vráceným Array.GetLowerBound metodou a končící indexem vráceným Array.GetUpperBound metodou.Iterate the elements by index starting with the index returned by the Array.GetLowerBound method and ending with the index returned by the Array.GetUpperBound method.

  • Pokud přiřazujete prvky v jednom poli do jiné, ujistěte se, že cílové pole má alespoň tolik prvků jako zdrojové pole porovnáním jejich Array.Length vlastností.If you are assigning elements in one array to another, ensure that the target array has at least as many elements as the source array by comparing their Array.Length properties.

Seznam počáteční hodnoty vlastností pro instanci IndexOutOfRangeException, najdete v článku IndexOutOfRangeException konstruktory.For a list of initial property values for an instance of IndexOutOfRangeException, see the IndexOutOfRangeException constructors.

Následující pokyny pro mezilehlé jazyky (IL) vyvolávají IndexOutOfRangeException:The following intermediate language (IL) instructions throw IndexOutOfRangeException:

  • ldelem.<type>ldelem.<type>

  • ldelemaldelema

  • stelem.<type>stelem.<type>

IndexOutOfRangeExceptionpoužívá HRESULT COR_E_INDEXOUTOFRANGE, který má hodnotu 0x80131508.IndexOutOfRangeException uses the HRESULT COR_E_INDEXOUTOFRANGE, which has the value 0x80131508.

Konstruktory

IndexOutOfRangeException()

Inicializuje novou instanci třídy IndexOutOfRangeException třídy.Initializes a new instance of the IndexOutOfRangeException class.

IndexOutOfRangeException(String)

Inicializuje novou instanci třídy IndexOutOfRangeException třídy pomocí zadané chybové zprávy.Initializes a new instance of the IndexOutOfRangeException class with a specified error message.

IndexOutOfRangeException(String, Exception)

Inicializuje novou instanci třídy IndexOutOfRangeException třídy pomocí zadané chybové zprávy a odkazu na vnitřní výjimku, která je příčinou této výjimky.Initializes a new instance of the IndexOutOfRangeException class with a specified error message and a reference to the inner exception that is the cause of this exception.

Vlastnosti

Data

Získá kolekci párů klíč/hodnota, které poskytují další uživatelsky definované informace o výjimce.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Zděděno od Exception)
HelpLink

Získá nebo nastaví odkaz na soubor s nápovědě spojený s touto výjimkou.Gets or sets a link to the help file associated with this exception.

(Zděděno od Exception)
HResult

Získá nebo nastaví hodnotu HRESULT, kódované číselné hodnoty, která je přiřazena konkrétní výjimce.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Zděděno od Exception)
InnerException

Exception Získá instanci, která způsobila aktuální výjimku.Gets the Exception instance that caused the current exception.

(Zděděno od Exception)
Message

Získá zprávu s popisem aktuální výjimky.Gets a message that describes the current exception.

(Zděděno od Exception)
Source

Získá nebo nastaví název aplikace nebo objektu, který způsobuje chybu.Gets or sets the name of the application or the object that causes the error.

(Zděděno od Exception)
StackTrace

Načte řetězcovou reprezentaci okamžitých snímků v zásobníku volání.Gets a string representation of the immediate frames on the call stack.

(Zděděno od Exception)
TargetSite

Získá metodu, která vyvolá aktuální výjimku.Gets the method that throws the current exception.

(Zděděno od Exception)

Metody

Equals(Object)

Určuje, zda se zadaný objekt rovná aktuálnímu objektu.Determines whether the specified object is equal to the current object.

(Zděděno od Object)
GetBaseException()

Při přepsání v odvozené třídě vrátí hodnotu Exception , která je hlavní příčinou jedné nebo více následných výjimek.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(Zděděno od Exception)
GetHashCode()

Slouží jako výchozí funkce hash.Serves as the default hash function.

(Zděděno od Object)
GetObjectData(SerializationInfo, StreamingContext)

Při přepsání v odvozené třídě nastaví na SerializationInfo výjimku informace o výjimce.When overridden in a derived class, sets the SerializationInfo with information about the exception.

(Zděděno od Exception)
GetType()

Získá typ modulu runtime aktuální instance.Gets the runtime type of the current instance.

(Zděděno od Exception)
MemberwiseClone()

Vytvoří kopii aktuálního Objectseznamu.Creates a shallow copy of the current Object.

(Zděděno od Object)
ToString()

Vytvoří a vrátí řetězcovou reprezentaci aktuální výjimky.Creates and returns a string representation of the current exception.

(Zděděno od Exception)

Události

SerializeObjectState

Nastane, pokud je serializovaná výjimka pro vytvoření objektu stavu výjimky, který obsahuje Serializovaná data o výjimce.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Zděděno od Exception)

Platí pro

Viz také