ArgumentOutOfRangeException Klasa

Definicja

Wyjątek, który jest generowany, gdy wartość argumentu znajduje się poza dozwolonym zakresem wartości zdefiniowanym przez wywołaną metodę.The exception that is thrown when the value of an argument is outside the allowable range of values as defined by the invoked method.

public ref class ArgumentOutOfRangeException : ArgumentException
public class ArgumentOutOfRangeException : ArgumentException
[System.Serializable]
public class ArgumentOutOfRangeException : ArgumentException
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class ArgumentOutOfRangeException : ArgumentException
type ArgumentOutOfRangeException = class
    inherit ArgumentException
type ArgumentOutOfRangeException = class
    inherit ArgumentException
    interface ISerializable
Public Class ArgumentOutOfRangeException
Inherits ArgumentException
Dziedziczenie
ArgumentOutOfRangeException
Dziedziczenie
ArgumentOutOfRangeException
Atrybuty
Implementuje

Przykłady

W poniższym przykładzie zdefiniowano klasę, aby zawierała informacje o zaproszonym gościu.The following example defines a class to contain information about an invited guest. Jeśli gość ma wartość młodszą niż 21, zostanie zgłoszony wyjątek ArgumentOutOfRangeException.If the guest is younger than 21, an ArgumentOutOfRangeException exception is thrown.

using System;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            Guest guest1 = new Guest("Ben", "Miller", 17);
            Console.WriteLine(guest1.GuestInfo());
        }
        catch (ArgumentOutOfRangeException outOfRange)
        {

            Console.WriteLine("Error: {0}", outOfRange.Message);
        }
    }
}

class Guest
{
    private string FirstName;
    private string LastName;
    private int Age;

    public Guest(string fName, string lName, int age)
    {
        FirstName = fName;
        LastName = lName;
        if (age < 21)
            throw new ArgumentOutOfRangeException("age","All guests must be 21-years-old or older.");
        else
            Age = age;
    }

    public string GuestInfo()
    {
        string gInfo = FirstName + " " + LastName + ", " + Age.ToString();
        return(gInfo);
    }
}
Module Module1
   Public Sub Main()
       Try
           Dim guest1 As Guest = New Guest("Ben", "Miller", 17)
           Console.WriteLine(guest1.GuestInfo)
       Catch outOfRange As ArgumentOutOfRangeException
           Console.WriteLine("Error: {0}", outOfRange.Message)
       End Try
   End Sub
End Module

Class Guest
    Private FirstName As String
    Private LastName As String
    Private Age As Integer

    Public Sub New(ByVal fName As String, ByVal lName As String, ByVal age As Integer)
        MyBase.New()
        FirstName = fName
        LastName = lName
        If (age < 21) Then
            Throw New ArgumentOutOfRangeException("age", "All guests must be 21-years-old or older.")
        Else
            age = age
        End If
    End Sub

    Public Function GuestInfo() As String
        Dim gInfo As String = (FirstName + (" " _
                    + (Me.LastName + (", " + Me.Age.ToString))))
        Return gInfo
    End Function
End Class

Uwagi

Wyjątek ArgumentOutOfRangeException jest generowany, gdy wywoływana jest metoda, a co najmniej jeden z argumentów przekazane do metody nie jest null i zawiera nieprawidłową wartość, która nie jest elementem członkowskim zestawu wartości oczekiwanych dla argumentu.An ArgumentOutOfRangeException exception is thrown when a method is invoked and at least one of the arguments passed to the method is not null and contains an invalid value that is not a member of the set of values expected for the argument. Właściwość ParamName identyfikuje nieprawidłowy argument i Właściwość ActualValue, jeśli wartość jest obecna, określa nieprawidłową wartość.The ParamName property identifies the invalid argument, and the ActualValue property, if a value is present, identifies the invalid value.

Zwykle ArgumentOutOfRangeException są wynikiem błędu dewelopera.Typically, an ArgumentOutOfRangeException results from developer error. Zamiast obsłużyć wyjątek w bloku try/catch należy wyeliminować przyczynę wyjątku lub, jeśli argument jest zwracany przez wywołanie metody lub dane wejściowe użytkownika przed przekazaniem do metody, która zgłasza wyjątek, należy sprawdzić poprawność argumentów przed przekazaniem ich do metody.Instead of handling the exception in a try/catch block, you should eliminate the cause of the exception or, if the argument is returned by a method call or input by the user before being passed to the method that throws the exception, you should validate arguments before passing them to the method.

ArgumentOutOfRangeException jest szeroko używany przez:ArgumentOutOfRangeException is used extensively by:

Warunki, w których jest generowany wyjątek ArgumentOutOfRangeException, to m.in.:The conditions in which an ArgumentOutOfRangeException exception is thrown include the following:

  • Pobierasz element członkowski kolekcji według numeru indeksu, a numer indeksu jest nieprawidłowy.You are retrieving the member of a collection by its index number, and the index number is invalid.

    Jest to najbardziej typowa przyczyna wyjątku ArgumentOutOfRangeException.This is the most common cause of an ArgumentOutOfRangeException exception. Zazwyczaj numer indeksu jest nieprawidłowy z jednego z czterech powodów:Typically, the index number is invalid for one of four reasons:

    1. Kolekcja nie zawiera żadnych elementów członkowskich, a Twój kod założono, że robi to.The collection has no members, and your code assumes that it does. Poniższy przykład próbuje pobrać pierwszy element kolekcji, która nie ma elementów:The following example attempts to retrieve the first element of a collection that has no elements:

      using System;
      using System.Collections.Generic;
      
      public class Example
      {
         public static void Main()
         {
            var list = new List<String>();
            Console.WriteLine("Number of items: {0}", list.Count);
            try {
               Console.WriteLine("The first item: '{0}'", list[0]);
            }
            catch (ArgumentOutOfRangeException e) {
               Console.WriteLine(e.Message);
            }
         }
      }
      // The example displays the following output:
      //   Number of items: 0
      //   Index was out of range. Must be non-negative and less than the size of the collection.
      //   Parameter name: index
      
      Imports System.Collections.Generic
      
      Module Example
         Public Sub Main()
            Dim list As New List(Of String)
            Console.WriteLine("Number of items: {0}", list.Count)
            Try
               Console.WriteLine("The first item: '{0}'", list(0))
            Catch e As ArgumentOutOfRangeException
               Console.WriteLine(e.Message)
            End Try
         End Sub
      End Module
      ' The example displays the following output:
      '   Number of items: 0
      '   Index was out of range. Must be non-negative and less than the size of the collection.
      '   Parameter name: index
      

      Aby zapobiec wyjątku, sprawdź, czy właściwość Count kolekcji jest większa niż zero przed próbą pobrania jakichkolwiek elementów członkowskich, ponieważ Poniższy fragment kodu.To prevent the exception, check whether the collection's Count property is greater than zero before attempting to retrieve any members, as the following code fragment does.

      if (list.Count > 0)
         Console.WriteLine("The first item: '{0}'", list[0]);
      
      If list.Count > 0 Then
         Console.WriteLine("The first item: '{0}'", list(0))
      End If
      
    2. W niektórych przypadkach może wystąpić wyjątek, ponieważ próbujesz dodać element członkowski do kolekcji przy użyciu indeksu, który nie istnieje, a nie przez wywołanie metody, takiej jak Add, która istnieje do tego celu.In some cases, the exception may occur because you are attempting to add a member to a collection by using an index that does not exist, rather than by calling the method, such as Add, that exists for this purpose. Poniższy przykład próbuje dodać element do kolekcji przy użyciu nieistniejącego indeksu zamiast wywołania metody List<T>.Add.The following example attempts to add an element to a collection by using a non-existent index rather than calling the List<T>.Add method.

      using System;
      using System.Collections.Generic;
      
      public class Example
      {
         public static void Main()
         {
            var numbers = new List<int>();
            numbers.AddRange( new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 20 } );
            
            var squares = new List<int>();
            for (int ctr = 0; ctr < numbers.Count; ctr++)
               squares[ctr] = (int) Math.Pow(numbers[ctr], 2); 
         }
      }
      // The example displays the following output:
      //    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.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
      //       at Example.Main()
      
      Imports System.Collections.Generic
      
      Module Example
         Public Sub Main()
            Dim numbers As New List(Of Integer)
            numbers.AddRange( { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 20 } )
            
            Dim squares As New List(Of Integer)
            For ctr As Integer = 0 To numbers.Count - 1
               squares(ctr) = CInt(numbers(ctr) ^ 2) 
            Next
         End Sub
      End Module
      ' The example displays the following output:
      '    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.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
      '       at Example.Main()
      

      Poniższy fragment kodu poprawia ten błąd:The following code fragment corrects this error:

      var squares = new List<int>();
      for (int ctr = 0; ctr < numbers.Count; ctr++)
         squares.Add((int) Math.Pow(numbers[ctr], 2)); 
      
      Dim squares As New List(Of Integer)
      For ctr As Integer = 0 To numbers.Count - 1
         squares.Add(CInt(numbers(ctr) ^ 2)) 
      Next
      
    3. Podjęto próbę pobrania elementu, którego indeks jest ujemny.You're attempting to retrieve an item whose index is negative. Zwykle dzieje się tak, ponieważ przeszukano kolekcję dla indeksu określonego elementu i błędnie założono, że wyszukiwanie zakończyło się pomyślnie.This usually occurs because you've searched a collection for the index of a particular element and have erroneously assumed that the search is successful. W poniższym przykładzie wywołanie metody List<T>.FindIndex(Predicate<T>) nie może znaleźć ciągu równego "Z" i dlatego zwraca wartość-1.In the following example, the call to the List<T>.FindIndex(Predicate<T>) method fails to find a string equal to "Z" and so returns -1. Jest to jednak nieprawidłowa wartość indeksu.However, this is an invalid index value.

      using System;
      using System.Collections.Generic;
      
      public class Example
      {
         public static void Main()
         {
            var list = new List<String>(); 
            list.AddRange( new String[] { "A", "B", "C" } );
            // Get the index of the element whose value is "Z".
            int index = list.FindIndex((new StringSearcher("Z")).FindEquals);
            try {
               Console.WriteLine("Index {0} contains '{1}'", index, list[index]); 
            }
            catch (ArgumentOutOfRangeException e) {
               Console.WriteLine(e.Message);
            }
         }
      }
      
      internal class StringSearcher
      {
         String value;
         
         public StringSearcher(String value)
         {
            this.value = value;
         }
         
         public bool FindEquals(String s) 
         {
            return s.Equals(value, StringComparison.InvariantCulture); 
         }
      }
      // The example displays the following output:
      //   Index was out of range. Must be non-negative and less than the size of the collection.
      //   Parameter name: index
      
      Imports System.Collections.Generic
      
      Module Example
         Public Sub Main()
            Dim list As New List(Of String) 
            list.AddRange( { "A", "B", "C" } )
            ' Get the index of the element whose value is "Z".
            Dim index As Integer = list.FindIndex(AddressOf (New StringSearcher("Z")).FindEquals)
            Try
               Console.WriteLine("Index {0} contains '{1}'", index, list(index)) 
            Catch e As ArgumentOutOfRangeException
               Console.WriteLine(e.Message)
            End Try
         End Sub
      End Module
      
      Friend Class StringSearcher
         Dim value As String
         
         Public Sub New(value As String)
            Me.value = value
         End Sub
         
         Public Function FindEquals(s As String) As Boolean
            Return s.Equals(value, StringComparison.InvariantCulture) 
         End Function
      End Class
      ' The example displays the following output:
      '   Index was out of range. Must be non-negative and less than the size of the collection.
      '   Parameter name: index
      

      Aby zapobiec wystąpieniu wyjątku, sprawdź, czy wyszukiwanie zakończyło się pomyślnie, upewniając się, że zwrócony indeks jest większy niż lub równy zero przed próbą pobrania elementu z kolekcji, tak jak Poniższy fragment kodu.To prevent the exception, check that the search is successful by making sure that the returned index is greater than or equal to zero before attempting to retrieve the item from the collection, as the following code fragment does.

      // Get the index of the element whose value is "Z".
      int index = list.FindIndex((new StringSearcher("Z")).FindEquals);
      if (index >= 0)
         Console.WriteLine("'Z' is found at index {0}", list[index]); 
      
      ' Get the index of the element whose value is "Z".
      Dim index As Integer = list.FindIndex(AddressOf (New StringSearcher("Z")).FindEquals)
      If index >= 0 Then
         Console.WriteLine("Index {0} contains '{1}'", index, list(index)) 
      End If
      
    4. Próbujesz pobrać element, którego indeks jest równy wartości właściwości Count kolekcji, jak pokazano w poniższym przykładzie.You're attempting to retrieve an element whose index is equal to the value of the collection's Count property, as the following example illustrates.

      using System;
      using System.Collections.Generic;
      
      public class Example
      {
         public static void Main()
         {
            var list = new List<String>(); 
            list.AddRange( new String[] { "A", "B", "C" } );
            try {
               // Display the elements in the list by index.
               for (int ctr = 0; ctr <= list.Count; ctr++) 
                  Console.WriteLine("Index {0}: {1}", ctr, list[ctr]);
            } 
            catch (ArgumentOutOfRangeException e) {
               Console.WriteLine(e.Message);
            }
         }
      }
      // The example displays the following output:
      //   Index 0: A
      //   Index 1: B
      //   Index 2: C
      //   Index was out of range. Must be non-negative and less than the size of the collection.
      //   Parameter name: index
      
      Imports System.Collections.Generic
      
      Module Example
         Public Sub Main()
            Dim list As New List(Of String) 
            list.AddRange( { "A", "B", "C" } )
            Try
               ' Display the elements in the list by index.
               For ctr As Integer = 0 To list.Count
                  Console.WriteLine("Index {0}: {1}", ctr, list(ctr)) 
               Next   
            Catch e As ArgumentOutOfRangeException
               Console.WriteLine(e.Message)
            End Try
         End Sub
      End Module
      ' The example displays the following output:
      '   Index 0: A
      '   Index 1: B
      '   Index 2: C
      '   Index was out of range. Must be non-negative and less than the size of the collection.
      '   Parameter name: index
      

      Ponieważ kolekcje w środowisku .NET wykorzystują indeksowanie oparte na zerach, pierwszy element kolekcji jest w indeksie 0, a ostatni element jest pod indeksem Count-1.Because collections in .NET use zero-based indexing, the first element of the collection is at index 0, and the last element is at index Count - 1. Możesz wyeliminować błąd, upewniając się, że uzyskujesz dostęp do ostatniego elementu przy indeksie Count-1, jak w poniższym kodzie.You can eliminate the error by ensuring that you access the last element at index Count - 1, as the following code does.

      // Display the elements in the list by index.
      for (int ctr = 0; ctr < list.Count; ctr++) 
         Console.WriteLine("Index {0}: {1}", ctr, list[ctr]);
      
      ' Display the elements in the list by index.
      For ctr As Integer = 0 To list.Count - 1 
         Console.WriteLine("Index {0}: {1}", ctr, list(ctr)) 
      Next   
      
  • Podjęto próbę wykonania operacji na ciągach, wywołując metodę manipulowania ciągami, a początkowy indeks nie istnieje w ciągu.You are attempting to perform a string operation by calling a string manipulation method, and the starting index does not exist in the string.

    Przeciążenia metod takich jak String.Compare, String.CompareOrdinal, String.IndexOf, IndexOfAny, String.Insert, String.LastIndexOf, String.LastIndexOfAny, Removelub String.Substring, które umożliwiają określenie początkowego indeksu operacji, wymagają, aby indeks był prawidłową pozycją w ciągu.Overloads of methods such as such as String.Compare, String.CompareOrdinal, String.IndexOf, IndexOfAny, String.Insert, String.LastIndexOf, String.LastIndexOfAny, Remove, or String.Substring that allow you to specify the starting index of the operation require that the index be a valid position within the string. Prawidłowe indeksy mieszczą się w zakresie od 0 do String.Length-1.Valid indexes range from 0 to String.Length - 1.

    Istnieją cztery typowe przyczyny tego wyjątku ArgumentOutOfRangeException:There are four common causes of this ArgumentOutOfRangeException exception:

    1. Pracujesz z pustym ciągiem lub String.Empty.You are working with an empty string, or String.Empty. Ponieważ jej Właściwość String.Length zwraca wartość 0, każda próba manipulowania nią przez indeks zgłasza wyjątek ArgumentOutOfRangeException.Because its String.Length property returns 0, any attempt to manipulate it by index throws an ArgumentOutOfRangeException exception. W poniższym przykładzie zdefiniowano metodę GetFirstCharacter, która zwraca pierwszy znak ciągu.The following example, defines a GetFirstCharacter method that returns the first character of a string. Jeśli ciąg jest pusty, ponieważ końcowy ciąg przesłany do metody ma wartość, metoda zgłasza wyjątek ArgumentOutOfRangeException.If the string is empty, as the final string passed to the method is, the method throws an ArgumentOutOfRangeException exception.

      using System;
      
      public class Example
      {
         public static void Main()
         {
             String[] words = { "the", "today", "tomorrow", " ", "" };
             foreach (var word in words)
                Console.WriteLine("First character of '{0}': '{1}'", 
                                  word, GetFirstCharacter(word));
         }
         
         private static char GetFirstCharacter(String s)
         {
            return s[0];
         }
      }
      // The example displays the following output:
      //    First character of //the//: //t//
      //    First character of //today//: //t//
      //    First character of //tomorrow//: //t//
      //    First character of // //: // //
      //    
      //    Unhandled Exception: System.IndexOutOfRangeException: Index was outside the bounds of the array.
      //       at Example.Main()
      
      Module Example
         Public Sub Main()
             Dim words() As String = { "the", "today", "tomorrow", " ", "" }
             For Each word In words
                Console.WriteLine("First character of '{0}': '{1}'", 
                                  word, GetFirstCharacter(word))
             Next                     
         End Sub
         
         Private Function GetFirstCharacter(s As String) As Char
            Return s(0)
         End Function
      End Module
      ' The example displays the following output:
      '    First character of 'the': 't'
      '    First character of 'today': 't'
      '    First character of 'tomorrow': 't'
      '    First character of ' ': ' '
      '    
      '    Unhandled Exception: System.IndexOutOfRangeException: Index was outside the bounds of the array.
      '       at Example.Main()
      

      Możesz wyeliminować wyjątek, sprawdzając, czy String.Length ciągu jest większa od zera, lub wywołując metodę IsNullOrEmpty, aby upewnić się, że ciąg nie jest null lub pusty.You can eliminate the exception by testing whether the string's String.Length is greater than zero or by calling the IsNullOrEmpty method to ensure that the string is not null or empty. Poniższy fragment kodu wykonuje te ostatnie.The following code fragment does the latter. W takim przypadku, jeśli ciąg jest null lub pusty, Metoda GetFirstCharacter zwróci wartość U + 0000.In this case, if the string is null or empty, the GetFirstCharacter method returns U+0000.

      static char GetFirstCharacter(String s)
      {
         if (String.IsNullOrEmpty(s)) 
            return '\u0000';
         else   
            return s[0];
      }
      
      Function GetFirstCharacter(s As String) As Char
         If String.IsNullOrEmpty(s) Then 
            Return ChrW(0)
         Else   
            Return s(0)
         End If   
      End Function
      
    2. Manipulujesz ciągiem w oparciu o pozycję podciągu w tym ciągu i nie udało się ustalić, czy podciąg został rzeczywiście znaleziony.You're manipulating a string based on the position of a substring within that string, and you've failed to determine whether the substring was actually found.

      Poniższy przykład wyodrębnia drugi wyraz frazy dwuwyrazowej.The following example extracts the second word of a two-word phrase. Zgłasza wyjątek ArgumentOutOfRangeException, jeśli fraza składa się tylko z jednego wyrazu i w związku z tym nie zawiera osadzonego znaku spacji.It throws an ArgumentOutOfRangeException exception if the phrase consists of only one word, and therefore does not contain an embedded space character. Dzieje się tak, ponieważ wywołanie metody String.IndexOf(String) zwraca wartość-1 w celu wskazania, że wyszukiwanie nie powiodło się, a ta nieprawidłowa wartość jest następnie przenoszona do metody String.Substring(Int32).This occurs because the call to the String.IndexOf(String) method returns -1 to indicate that the search failed, and this invalid value is then passed to the String.Substring(Int32) method.

      using System;
      
      public class Example
      {
         public static void Main()
         {
            String[] phrases = { "ocean blue", "concerned citizen", 
                                 "runOnPhrase" };
            foreach (var phrase in phrases)
               Console.WriteLine("Second word is {0}", GetSecondWord(phrase));
         }
        
         static String GetSecondWord(String s)
         {
            int pos = s.IndexOf(" ");
            return s.Substring(pos).Trim();
         }
      }
      // The example displays the following output:
      //    Second word is blue
      //    Second word is citizen
      //    
      //    Unhandled Exception: System.ArgumentOutOfRangeException: StartIndex cannot be less than zero.
      //    Parameter name: startIndex
      //       at System.String.Substring(Int32 startIndex, Int32 length)
      //       at Example.GetSecondWord(String s)
      //       at Example.Main()
      
      Module Example
         Public Sub Main()
            Dim phrases() As String = { "ocean blue", "concerned citizen", 
                                        "runOnPhrase" }
            For Each phrase In phrases
               Console.WriteLine("Second word is {0}", GetSecondWord(phrase))
            Next                            
        End Sub
        
        Function GetSecondWord(s As String) As String
           Dim pos As Integer = s.IndexOf(" ")
           Return s.Substring(pos).Trim()
        End Function
      End Module
      ' The example displays the following output:
      '       Second word is blue
      '       Second word is citizen
      '       
      '       Unhandled Exception: System.ArgumentOutOfRangeException: StartIndex cannot be less than zero.
      '       Parameter name: startIndex
      '          at System.String.Substring(Int32 startIndex, Int32 length)
      '          at Example.GetSecondWord(String s)
      '          at Example.Main()
      

      Aby wyeliminować wyjątek, sprawdź poprawność wartości zwracanej przez metodę wyszukiwania ciągów przed wywołaniem metody manipulowania ciągiem.To eliminate the exception, validate the value returned by the string search method before calling the string manipulation method.

      using System;
      
      public class Example
      {
         public static void Main()
         {
            String[] phrases = { "ocean blue", "concerned citizen", 
                                 "runOnPhrase" };
            foreach (var phrase in phrases) {
               String word = GetSecondWord(phrase);
               if (! String.IsNullOrEmpty(word))
                  Console.WriteLine("Second word is {0}", word);
            }   
         }
        
         static String GetSecondWord(String s)
         {
            int pos = s.IndexOf(" ");
            if (pos >= 0)
               return s.Substring(pos).Trim();
            else
               return String.Empty;   
         }
      }
      // The example displays the following output:
      //       Second word is blue
      //       Second word is citizen
      
      Module Example
         Public Sub Main()
            Dim phrases() As String = { "ocean blue", "concerned citizen", 
                                        "runOnPhrase" }
            For Each phrase In phrases
               Dim word As String = GetSecondWord(phrase)
               If Not String.IsNullOrEmpty(word) Then _
                  Console.WriteLine("Second word is {0}", word)
            Next                            
         End Sub
        
         Function GetSecondWord(s As String) As String
            Dim pos As Integer = s.IndexOf(" ")
            If pos >= 0
                Return s.Substring(pos).Trim()
            Else
               Return String.Empty
            End If
        End Function
      End Module
      ' The example displays the following output:
      '       Second word is blue
      '       Second word is citizen
      
    3. Podjęto próbę wyodrębnienia podciągu, który znajduje się poza zakresem bieżącego ciągu.You've attempted to extract a substring that is outside the range of the current string.

      Metody wyodrębniania podciągów wymagają określenia pozycji początkowej podciągu, a w przypadku podciągów, które nie są kontynuowane na końcu ciągu, liczby znaków w podciągu.The methods that extract substrings all require that you specify the starting position of the substring and, for substrings that do not continue to the end of the string, the number of characters in the substring. Należy zauważyć, że nie jest to indeks ostatniego znaku w podciągu.Note that this is not the index of the last character in the substring.

      Wyjątek ArgumentOutOfRangeException jest zwykle generowany w tym przypadku, ponieważ liczba znaków w podciągu jest nieprawidłowa.An ArgumentOutOfRangeException exception is typically thrown in this case because you've incorrectly calculated the number of characters in the substring. Jeśli używasz metody wyszukiwania, takiej jak String.IndexOf, aby zidentyfikować początkową i końcową pozycję podciągu:If you are using a search method like String.IndexOf to identify the starting and ending positions of a substring:

      • Jeśli znak w pozycji końcowej zwróconej przez String.IndexOf ma być uwzględniony w podciągu, Pozycja końcowa podciągu jest podana przez formułęIf the character in the ending position returned by String.IndexOf is to be included in the substring, the ending position of the substring is given by the formula

        endIndex - startIndex + 1  
        
      • Jeśli znak w pozycji końcowej zwróconej przez String.IndexOf ma być wykluczony z podciągu, Pozycja końcowa podciągu jest określona przez formułęIf the character in the ending position returned by String.IndexOf is to be excluded from the substring, the ending position of the substring is given by the formula

        endIndex - startIndex   
        

        W poniższym przykładzie zdefiniowano metodę FindWords, która używa metody String.IndexOfAny(Char[], Int32) do identyfikowania znaków spacji i znaków interpunkcyjnych w ciągu i zwraca tablicę zawierającą słowa Znalezione w ciągu.The following example defines a FindWords method that uses the String.IndexOfAny(Char[], Int32) method to identify space characters and punctuation marks in a string and returns an array that contains the words found in the string.

        using System;
        using System.Collections.Generic;
        
        public class Example
        {
           public static void Main()
           {
              String sentence = "This is a simple, short sentence.";
              Console.WriteLine("Words in '{0}':", sentence);
              foreach (var word in FindWords(sentence))
                 Console.WriteLine("   '{0}'", word);
           }
           
           static String[] FindWords(String s)
           {
              int start = 0, end = 0;
              Char[] delimiters = { ' ', '.', ',', ';', ':', '(', ')' };
              var words = new List<String>();
        
              while (end >= 0) {
                 end = s.IndexOfAny(delimiters, start);
                 if (end >= 0) {
                    if (end - start > 0)
                       words.Add(s.Substring(start, end - start)); 
        
                    start = end++;
                 }
                 else {
                    if (start < s.Length - 1)
                       words.Add(s.Substring(start));
                 }
              }    
              return words.ToArray();                         
           }
        }
        // The example displays the following output:
        //       Words in 'This is a simple, short sentence.':
        //          'This'
        //          'is'
        //          'a'
        //          'simple'
        //          'short'
        //          'sentence'
        
        Imports System.Collections.Generic
        
        Module Example
           Public Sub Main()
              Dim sentence As String = "This is a simple, short sentence."
              Console.WriteLine("Words in '{0}':", sentence)
              For Each word In FindWords(sentence)
                 Console.WriteLine("   '{0}'", word)
              Next
           End Sub
           
           Function FindWords(s As String) As String()
              Dim start, ending As Integer
              Dim delimiters() As Char = { " "c, "."c, ","c, ";"c, ":"c,
                                           "("c, ")"c }
              Dim words As New List(Of String)()
        
              Do While ending >= 0
                 ending = s.IndexOfAny(delimiters, start)
                 If ending >= 0
                    If ending - start > 0 Then
                       words.Add(s.Substring(start, ending - start)) 
                    End If
                    start = ending + 1
                 Else
                    If start < s.Length - 1 Then
                       words.Add(s.Substring(start))
                    End If      
                 End If
              Loop    
              Return words.ToArray()                         
           End Function
        End Module
        ' The example displays the following output:
        '       Words in 'This is a simple, short sentence.':
        '          'This'
        '          'is'
        '          'a'
        '          'simple'
        '          'short'
        '          'sentence'
        
  • Liczba ujemna została przeniesiona do metody z argumentem, który wymaga tylko liczb dodatnich i wartości zero lub przekazał liczbę ujemną lub zero do metody z argumentem, który wymaga tylko liczb dodatnich.You have passed a negative number to a method with an argument that requires only positive numbers and zero, or you have passed either a negative number or zero to a method with an argument that requires only positive numbers.

    Na przykład Metoda Array.CreateInstance(Type, Int32, Int32, Int32) wymaga określenia liczby elementów w każdym wymiarze dwuwymiarowej tablicy; prawidłowe wartości dla każdego wymiaru mogą mieć wartość z zakresu od 0 do Int32.MaxValue.For example, the Array.CreateInstance(Type, Int32, Int32, Int32) method requires that you specify the number of elements in each dimension of a two-dimensional array; valid values for each dimension can range from 0 to Int32.MaxValue. Ale ponieważ argument wymiaru w poniższym przykładzie ma wartość ujemną, metoda zgłasza wyjątek ArgumentOutOfRangeException.But because the dimension argument in the following example has a negative value, the method throws an ArgumentOutOfRangeException exception.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          int dimension1 = 10;
          int dimension2 = -1;
          try {
             Array arr = Array.CreateInstance(typeof(String), 
                                              dimension1, dimension2);
          }
          catch (ArgumentOutOfRangeException e) {
             if (e.ActualValue != null)
                Console.WriteLine("{0} is an invalid value for {1}: ", e.ActualValue, e.ParamName);
             Console.WriteLine(e.Message);
          }
       }
    }
    // The example displays the following output:
    //     Non-negative number required.
    //     Parameter name: length2
    
    Module Example
       Public Sub Main()
          Dim dimension1 As Integer = 10
          Dim dimension2 As Integer = -1
          Try
             Dim arr AS Array = Array.CreateInstance(GetType(String), 
                                                     dimension1, dimension2)
          Catch e As ArgumentOutOfRangeException
             If e.ActualValue IsNot Nothing Then
                Console.WriteLine("{0} is an invalid value for {1}: ", 
                                  e.ActualValue, e.ParamName)
             End If                     
             Console.WriteLine(e.Message)
          End Try
       End Sub
    End Module
    ' The example displays the following output:
    '     Non-negative number required.
    '     Parameter name: length2
    

    Aby poprawić błąd, upewnij się, że wartość nieprawidłowego argumentu jest nieujemna.To correct the error, ensure that the value of the invalid argument is non-negative. Można to zrobić, podając prawidłową wartość, jak działa Poniższy fragment kodu.You can do this by providing a valid value, as the following code fragment does.

    int dimension1 = 10;
    int dimension2 = 10;
    Array arr = Array.CreateInstance(typeof(String), 
                                     dimension1, dimension2);   
    
    Dim dimension1 As Integer = 10
    Dim dimension2 As Integer = 10
    Dim arr As Array = Array.CreateInstance(GetType(String), 
                                            dimension1, dimension2)   
    

    Możesz również sprawdzić poprawność danych wejściowych i, jeśli są nieprawidłowe, podjąć pewne działania.You can also validate the input and, if it is invalid, take some action. Poniższy fragment kodu wyświetla komunikat o błędzie zamiast wywoływania metody.The following code fragment displays an error message instead of calling the method.

    if (dimension1 < 0 || dimension2 < 0) {
       Console.WriteLine("Unable to create the array.");
       Console.WriteLine("Specify non-negative values for the two dimensions.");
    }   
    else {
       arr = Array.CreateInstance(typeof(String), 
                                  dimension1, dimension2);   
    }
    
    If dimension1 < 0 OrElse dimension2 < 0 Then
       Console.WriteLine("Unable to create the array.")
       Console.WriteLine("Specify non-negative values for the two dimensions.")
    Else
       arr = Array.CreateInstance(GetType(String), 
                                  dimension1, dimension2)   
    End If
    
  • W aplikacji, która jest wielowątkowa lub zawiera zadania, które są wykonywane asynchronicznie i które aktualizuje tablicę lub kolekcję, istnieje sytuacja wyścigu.A race condition exists in an app that is multithreaded or has tasks that execute asynchronously and that updates an array or collection.

    Poniższy przykład używa obiektu List<T>, aby wypełnić kolekcję obiektów Continent.The following example uses a List<T> object to populate a collection of Continent objects. Zgłasza ArgumentOutOfRangeException, jeśli przykład próbuje wyświetlić siedem elementów w kolekcji, zanim kolekcja zostanie całkowicie wypełniona.It throws an ArgumentOutOfRangeException if the example attempts to display the seven items in the collection before the collection is fully populated.

    using System;
    using System.Collections.Generic;
    using System.Threading;
    
    public class Continent
    {
       public String Name { get; set; }
       public int Population { get; set; }
       public Decimal Area { get; set; }   
    }
    
    public class Example
    {
       static List<Continent> continents = new List<Continent>();
       static String msg; 
       
       public static void Main()
       {
          String[] names = { "Africa", "Antarctica", "Asia", 
                             "Australia", "Europe", "North America",
                             "South America" };
          // Populate the list.
          foreach (var name in names) {
             var th = new Thread(PopulateContinents);
             th.Start(name);
          }              
          Console.WriteLine(msg);
          Console.WriteLine();
    
          // Display the list.
          for (int ctr = 0; ctr < names.Length; ctr++) {
             var continent = continents[ctr];
             Console.WriteLine("{0}: Area: {1}, Population {2}", 
                               continent.Name, continent.Population,
                               continent.Area);
          }
       }
       
       private static void PopulateContinents(Object obj)
       {
          String name = obj.ToString();
          msg += String.Format("Adding '{0}' to the list.\n", name);
          var continent = new Continent();
          continent.Name = name;
          // Sleep to simulate retrieving remaining data.
          Thread.Sleep(50);
          continents.Add(continent);
       }
    }
    // The example displays output like the following:
    //    Adding //Africa// to the list.
    //    Adding //Antarctica// to the list.
    //    Adding //Asia// to the list.
    //    Adding //Australia// to the list.
    //    Adding //Europe// to the list.
    //    Adding //North America// to the list.
    //    Adding //South America// to the list.
    //    
    //    
    //    
    //    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.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
    //       at Example.Main()
    
    Imports System.Collections.Generic
    Imports System.Threading
    
    Public Class Continent
       Public Property Name As String
       Public Property Population As Integer
       Public Property Area As Decimal  
    End Class
    
    Module Example
       Dim continents As New List(Of Continent)
       Dim msg As String 
          
       Public Sub Main()
          Dim names() As String = { "Africa", "Antarctica", "Asia", 
                                         "Australia", "Europe", "North America",
                                         "South America" }
          ' Populate the list.
          For Each name In names
             Dim th As New Thread(AddressOf PopulateContinents)
             th.Start(name)
          Next              
          Console.WriteLine(msg)
          Console.WriteLine()
    
          ' Display the list.
          For ctr As Integer = 0 To names.Length - 1
             Dim continent = continents(ctr)
             Console.WriteLine("{0}: Area: {1}, Population {2}", 
                               continent.Name, continent.Population,
                               continent.Area)
          Next
       End Sub
       
       Private Sub PopulateContinents(obj As Object)
          Dim name As String = obj.ToString()
          msg += String.Format("Adding '{0}' to the list.{1}", name, vbCrLf)
          Dim continent As New Continent()
          continent.Name = name
          ' Sleep to simulate retrieving remaining data.
          Thread.Sleep(50)
          continents.Add(continent)
       End Sub
    End Module
    ' The example displays output like the following:
    '    Adding 'Africa' to the list.
    '    Adding 'Antarctica' to the list.
    '    Adding 'Asia' to the list.
    '    Adding 'Australia' to the list.
    '    Adding 'Europe' to the list.
    '    Adding 'North America' to the list.
    '    Adding 'South America' to the list.
    '    
    '    
    '    
    '    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.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
    '       at Example.Main()
    

    W takim przypadku dostępne są dwa zasoby z wielu wątków:In this case, two resources are accessed from multiple threads:

    • Kolekcja wystąpień klasy continents.The continents collection. Metoda List<T>.Add jest wywoływana z wielu wątków.Its List<T>.Add method is called from multiple threads. Ponadto główny lub główny wątek zakłada, że kolekcja jest całkowicie wypełniana o siedem elementów podczas iteracji jej elementów członkowskich.In addition, the main or primary thread assumes the collection is fully populated with seven elements when it iterates its members.

    • Ciąg msg, który jest połączony z wielu wątków.The msg string, which is concatenated from multiple threads.

    Aby poprawić ten błąd, upewnij się, że udostępniony stan jest dostępny w sposób bezpieczny dla wątków, jak pokazano poniżej.To correct the error, ensure that shared state is accessed in a thread-safe way, as follows.

    • Jeśli aplikacja używa obiektu tablicy lub kolekcji, rozważ użycie klasy kolekcji z bezpieczną wątkiem, takiej jak typy w przestrzeni nazw System.Collections.Concurrent lub System.Collections.Immutable Zwolnij poza pasmem.if your app uses an array or collection object, consider using a thread-safe collection class, such as the types in the System.Collections.Concurrent namespace or the System.Collections.Immutable out-of-band release.

    • Upewnij się, że dostęp do udostępnionego stanu (czyli zasobów, do których można uzyskać dostęp za pomocą wielu wątków) jest dostępny w sposób bezpieczny dla wątków, dzięki czemu tylko jeden wątek w danym momencie ma wyłączny dostęp do zasobów.Ensure that shared state (that is, resources that can be accessed by multiple threads) is accessed in a thread-safe way, so that only one thread at a time has exclusive access to the resources. Wiele klas, takich jak CountdownEvent, Interlocked, Monitori Mutex, jest dostępnych do synchronizowania dostępu do zasobów.A large number of classes, such as CountdownEvent, Interlocked, Monitor, and Mutex, are available to synchronize access to resources. Aby uzyskać więcej informacji, zobacz wątkowość.For more information, see Threading. Ponadto obsługa języka jest dostępna za pomocą instrukcji Lock w C# i konstrukcji SyncLock w Visual Basic.In addition, language support is available through the lock statement in C# and the SyncLock construct in Visual Basic.

    Poniższy przykład dotyczy ArgumentOutOfRangeException i innych problemów z poprzedniego przykładu.The following example addresses the ArgumentOutOfRangeException and the other issues from the previous example. Zastępuje obiekt List<T> obiektem ConcurrentBag<T>, aby upewnić się, że dostęp do kolekcji jest bezpieczny dla wątków, używa obiektu CountdownEvent, aby upewnić się, że wątek aplikacji jest kontynuowany dopiero po wykonaniu innych wątków, i używa blokady, aby zapewnić, że tylko jeden wątek może uzyskać dostęp do zmiennej msg jednocześnie.It replaces the List<T> object with a ConcurrentBag<T> object to ensure that access to the collection is thread-safe, uses a CountdownEvent object to ensure that the application thread continues only after other threads have executed, and uses a lock to ensure that only one thread can access the msg variable at a time.

    using System;
    using System.Collections.Concurrent;
    using System.Threading;
    
    public class Continent
    {
       public String Name { get; set; }
       public int Population { get; set; }
       public Decimal Area { get; set; }   
    }
    
    public class Example
    {
       static ConcurrentBag<Continent> continents = new ConcurrentBag<Continent>();
       static CountdownEvent gate;
       static String msg = String.Empty;
    
       public static void Main()
       {
          String[] names = { "Africa", "Antarctica", "Asia", 
                             "Australia", "Europe", "North America",
                             "South America" };
          gate = new CountdownEvent(names.Length);
          
          // Populate the list.
          foreach (var name in names) {
             var th = new Thread(PopulateContinents);
             th.Start(name);
          }              
    
          // Display the list.
          gate.Wait();
          Console.WriteLine(msg);
          Console.WriteLine();
    
          var arr = continents.ToArray();
          for (int ctr = 0; ctr < names.Length; ctr++) {
             var continent = arr[ctr];
             Console.WriteLine("{0}: Area: {1}, Population {2}", 
                               continent.Name, continent.Population,
                               continent.Area);
          }
       }
       
       private static void PopulateContinents(Object obj)
       {
          String name = obj.ToString();
          lock(msg) { 
             msg += String.Format("Adding '{0}' to the list.\n", name);
          }
          var continent = new Continent();
          continent.Name = name;
          // Sleep to simulate retrieving remaining data.
          Thread.Sleep(25);
          continents.Add(continent);
          gate.Signal();
       }
    }
    // The example displays output like the following:
    //       Adding 'Africa' to the list.
    //       Adding 'Antarctica' to the list.
    //       Adding 'Asia' to the list.
    //       Adding 'Australia' to the list.
    //       Adding 'Europe' to the list.
    //       Adding 'North America' to the list.
    //       Adding 'South America' to the list.
    //       
    //       
    //       Africa: Area: 0, Population 0
    //       Antarctica: Area: 0, Population 0
    //       Asia: Area: 0, Population 0
    //       Australia: Area: 0, Population 0
    //       Europe: Area: 0, Population 0
    //       North America: Area: 0, Population 0
    //       South America: Area: 0, Population 0
    
    Imports System.Collections.Concurrent
    Imports System.Threading
    
    Public Class Continent
       Public Property Name As String
       Public Property Population As Integer
       Public Property Area As Decimal  
    End Class
    
    Module Example
       Dim continents As New ConcurrentBag(Of Continent)
       Dim gate As CountdownEvent
       Dim msg As String = String.Empty
          
       Public Sub Main()
          Dim names() As String = { "Africa", "Antarctica", "Asia", 
                                    "Australia", "Europe", "North America",
                                    "South America" }
          gate = new CountdownEvent(names.Length)
          
          ' Populate the list.
          For Each name In names
             Dim th As New Thread(AddressOf PopulateContinents)
             th.Start(name)
          Next              
    
          ' Display the list.
          gate.Wait()
          Console.WriteLine(msg)
          Console.WriteLine()
    
          For ctr As Integer = 0 To names.Length - 1
             Dim continent = continents(ctr)
             Console.WriteLine("{0}: Area: {1}, Population {2}", 
                               continent.Name, continent.Population,
                               continent.Area)
          Next
       End Sub
       
       Private Sub PopulateContinents(obj As Object)
          Dim name As String = obj.ToString()
          SyncLock msg 
             msg += String.Format("Adding '{0}' to the list.{1}", name, vbCrLf)
          End SyncLock
          Dim continent As New Continent()
          continent.Name = name
          ' Sleep to simulate retrieving remaining data.
          Thread.Sleep(25)
          continents.Add(continent)
          gate.Signal()
       End Sub
    End Module
    ' The example displays output like the following:
    '    Adding 'Africa' to the list.
    '    Adding 'Antarctica' to the list.
    '    Adding 'Asia' to the list.
    '    Adding 'Australia' to the list.
    '    Adding 'Europe' to the list.
    '    Adding 'North America' to the list.
    '    Adding 'South America' to the list.
    '    
    '    
    '    Africa: Area: 0, Population 0
    '    Antarctica: Area: 0, Population 0
    '    Asia: Area: 0, Population 0
    '    Australia: Area: 0, Population 0
    '    Europe: Area: 0, Population 0
    '    North America: Area: 0, Population 0
    '    South America: Area: 0, Population 0
    

ArgumentOutOfRangeException używa COR_E_ARGUMENTOUTOFRANGE HRESULT, który ma wartość 0x80131502.ArgumentOutOfRangeException uses the HRESULT COR_E_ARGUMENTOUTOFRANGE, which has the value 0x80131502.

Aby uzyskać listę początkowych wartości właściwości dla wystąpienia ArgumentOutOfRangeException, zobacz konstruktory ArgumentOutOfRangeException.For a list of initial property values for an instance of ArgumentOutOfRangeException, see the ArgumentOutOfRangeException constructors.

Konstruktory

ArgumentOutOfRangeException()

Inicjuje nowe wystąpienie klasy ArgumentOutOfRangeException.Initializes a new instance of the ArgumentOutOfRangeException class.

ArgumentOutOfRangeException(SerializationInfo, StreamingContext)

Inicjuje nowe wystąpienie klasy ArgumentOutOfRangeException z zserializowanymi danymi.Initializes a new instance of the ArgumentOutOfRangeException class with serialized data.

ArgumentOutOfRangeException(String)

Inicjuje nowe wystąpienie klasy ArgumentOutOfRangeException z nazwą parametru powodującego ten wyjątek.Initializes a new instance of the ArgumentOutOfRangeException class with the name of the parameter that causes this exception.

ArgumentOutOfRangeException(String, Exception)

Inicjuje nowe wystąpienie klasy ArgumentOutOfRangeException z określonym komunikatem o błędzie i wyjątkiem, który jest przyczyną tego wyjątku.Initializes a new instance of the ArgumentOutOfRangeException class with a specified error message and the exception that is the cause of this exception.

ArgumentOutOfRangeException(String, Object, String)

Inicjuje nowe wystąpienie klasy ArgumentOutOfRangeException z nazwą parametru, wartością argumentu i określonym komunikatem o błędzie.Initializes a new instance of the ArgumentOutOfRangeException class with the parameter name, the value of the argument, and a specified error message.

ArgumentOutOfRangeException(String, String)

Inicjuje nowe wystąpienie klasy ArgumentOutOfRangeException z nazwą parametru powodującego ten wyjątek i określony komunikat o błędzie.Initializes a new instance of the ArgumentOutOfRangeException class with the name of the parameter that causes this exception and a specified error message.

Właściwości

ActualValue

Pobiera wartość argumentu powodującą ten wyjątek.Gets the argument value that causes this exception.

Data

Pobiera kolekcję par klucz/wartość, które zawierają dodatkowe informacje zdefiniowane przez użytkownika dotyczące wyjątku.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Odziedziczone po Exception)
HelpLink

Pobiera lub ustawia link do pliku pomocy skojarzonego z tym wyjątkiem.Gets or sets a link to the help file associated with this exception.

(Odziedziczone po Exception)
HResult

Pobiera lub ustawia wartość HRESULT, kodowane wartości liczbowe przypisane do określonego wyjątku.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Odziedziczone po Exception)
InnerException

Pobiera wystąpienie Exception, które spowodowało wyjątek bieżący.Gets the Exception instance that caused the current exception.

(Odziedziczone po Exception)
Message

Pobiera komunikat o błędzie i reprezentację ciągu nieprawidłowej wartości argumentu lub tylko komunikat o błędzie, jeśli wartość argumentu jest równa null.Gets the error message and the string representation of the invalid argument value, or only the error message if the argument value is null.

ParamName

Pobiera nazwę parametru powodującego ten wyjątek.Gets the name of the parameter that causes this exception.

(Odziedziczone po ArgumentException)
Source

Pobiera lub ustawia nazwę aplikacji lub obiekt, który powoduje błąd.Gets or sets the name of the application or the object that causes the error.

(Odziedziczone po Exception)
StackTrace

Pobiera ciąg reprezentujący bezpośrednie ramki w stosie wywołań.Gets a string representation of the immediate frames on the call stack.

(Odziedziczone po Exception)
TargetSite

Pobiera metodę, która zgłasza bieżący wyjątek.Gets the method that throws the current exception.

(Odziedziczone po Exception)

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetBaseException()

Gdy jest zastępowany w klasie pochodnej, zwraca Exception, który jest główną przyczyną jednego lub kilku kolejnych wyjątków.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(Odziedziczone po Exception)
GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetObjectData(SerializationInfo, StreamingContext)

Ustawia obiekt SerializationInfo z nieprawidłową wartością argumentu i dodatkowymi informacjami o wyjątku.Sets the SerializationInfo object with the invalid argument value and additional exception information.

GetType()

Pobiera typ środowiska uruchomieniowego bieżącego wystąpienia.Gets the runtime type of the current instance.

(Odziedziczone po Exception)
MemberwiseClone()

Tworzy skróconą kopię bieżącego Object.Creates a shallow copy of the current Object.

(Odziedziczone po Object)
ToString()

Tworzy i zwraca reprezentację ciągu bieżącego wyjątku.Creates and returns a string representation of the current exception.

(Odziedziczone po Exception)

Zdarzenia

SerializeObjectState

Występuje, gdy wyjątek jest serializowany w celu utworzenia obiektu stanu wyjątku, który zawiera serializowane dane dotyczące wyjątku.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Odziedziczone po Exception)

Dotyczy

Zobacz też