C# | Array.ConstrainedCopy() Method
Last Updated : 11 Oct, 2022
This method is used to copy a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. Guarantees that all changes are undone if the copy does not succeed completely. Syntax:
public static void ConstrainedCopy (Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length);
Parameters:
sourceArray: It is the Array that contains the data to copy. sourceIndex: It is the 32-bit integer that represents the index in the sourceArray at which copying begins. destinationArray: It is the Array that receives the data. destinationIndex: It is the 32-bit integer that represents the index in the destinationArray at which storing begins. length: It is the 32-bit integer that represents the number of elements to copy.
Exceptions:
- ArgumentNullException: If the sourceArray or destinationArray is null.
- RankException: If the sourceArray and destinationArray have different ranks.
- ArrayTypeMismatchException: If the sourceArray type is neither the same as nor derived from the destinationArray type.
- InvalidCastException: At least one element in sourceArray cannot be cast to the type of destinationArray.
- ArgumentOutOfRangeException: If the sourceIndex is less than the lower bound of the first dimension of sourceArray or destinationIndex is less than the lower bound of the first dimension of destinationArray or length is less than zero.
- ArgumentException: If the length is greater than the number of elements from sourceIndex to the end of sourceArray Or the length is greater than the number of elements from destinationIndex to the end of destinationArray.
Below programs illustrate the use of Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) Method: Example 1:
CSHARP // C# program to demonstrate // ConstrainedCopy() method using System; using System.Collections.Generic; public class GFG { // Main Method public static void Main() { try { // Creating and initializing new the String String[] srcArr = { "Sun", "Mon", "Tue", "Thu" }; // Creating the object of empty String Array String[] destArr = new String[10]; // Display the values of the myArr. Console.WriteLine("Initial Array:"); // calling the PrintIndexAndValues() // method to print PrintIndexAndValues(srcArr); // getting a ConstrainedCopy in destArr // from srcArr using method ConstrainedCopy() Array.ConstrainedCopy(srcArr, 1, destArr, 0, 3); // Display the value of the destArr Console.WriteLine("Destination Array: "); // calling the PrintIndexAndValues() // method to print PrintIndexAndValues(destArr); } catch (ArgumentNullException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (RankException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (ArrayTypeMismatchException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (InvalidCastException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (ArgumentOutOfRangeException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (ArgumentException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } } // Defining the method // PrintIndexAndValues public static void PrintIndexAndValues(String[] myArr) { for (int i = 0; i < myArr.Length; i++) { Console.WriteLine("{0}", myArr[i]); } Console.WriteLine(); } }
Output:Initial Array: Sun Mon Tue Thu Destination Array: Mon Tue Thu
Example 2: For ArgumentNullException
CSHARP // C# program to demonstrate // ConstrainedCopy() method // For ArgumentNullException using System; using System.Collections.Generic; class GFG { // Main Method public static void Main() { try { // Creating and initializing the // String Array with null String[] srcArr = null; // Creating the object of empty String Array String[] destArr = new String[10]; // getting a ConstrainedCopy in destArr // from srcArr using method ConstrainedCopy() Console.WriteLine("Trying to get the ConstrainedCopy " +"while srcArr is null"); Console.WriteLine(); Array.ConstrainedCopy(srcArr, 1, destArr, 0, 3); // Display the value of the destArr. Console.WriteLine("Destination Array: "); // calling the PrintIndexAndValues() // method to print PrintIndexAndValues(destArr); } catch (ArgumentNullException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (RankException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (ArrayTypeMismatchException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (InvalidCastException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (ArgumentOutOfRangeException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (ArgumentException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } } // Defining the method // PrintIndexAndValues public static void PrintIndexAndValues(String[] myArr) { for (int i = 0; i < myArr.Length; i++) { Console.WriteLine("{0}", myArr[i]); } Console.WriteLine(); } }
Output:Trying to get the ConstrainedCopy while srcArr is null Exception Thrown: System.ArgumentNullException
Example 3: For RankException
CSHARP // C# program to demonstrate // ConstrainedCopy() method // For RankException using System; using System.Collections.Generic; public class GFG { // Main Method public static void Main() { try { // Creating and initializing new the String String[] srcArr = { "Sun", "Mon", "Tue", "Thu" }; // Creating the object of empty String Array String[, ] destArr = new String[10, 5]; // Display the values of the myArr. Console.WriteLine("Initial Array:"); // calling the PrintIndexAndValues() // method to print PrintIndexAndValues(srcArr); // getting a ConstrainedCopy in destArr // from srcArr using method ConstrainedCopy() Console.WriteLine("Trying to get the ConstrainedCopy " +"in destArr of rank 2"); Console.WriteLine("while rank of srcArr is 1"); Array.ConstrainedCopy(srcArr, 1, destArr, 0, 3); } catch (ArgumentNullException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (RankException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (ArrayTypeMismatchException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (InvalidCastException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (ArgumentOutOfRangeException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (ArgumentException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } } // Defining the method // PrintIndexAndValues public static void PrintIndexAndValues(String[] myArr) { for (int i = 0; i < myArr.Length; i++) { Console.WriteLine("{0}", myArr[i]); } Console.WriteLine(); } }
Output:Initial Array: Sun Mon Tue Thu Trying to get the ConstrainedCopy in destArr of rank 2 while rank of srcArr is 1 Exception Thrown: System.RankException
Example 4: For ArrayTypeMismatchException
CSharp // C# program to demonstrate // ConstrainedCopy() method // For ArrayTypeMismatchException using System; using System.Collections.Generic; class GFG { // Main Method public static void Main() { try { // Creating and initializing new the String String[] srcArr = { "Sun", "Mon", "Tue", "Thu" }; // Creating the object of // empty Integer Array int[] destArr = new int[10]; // Display the values of the myArr. Console.WriteLine("Initial Array:"); // calling the PrintIndexAndValues() // method to print PrintIndexAndValues(srcArr); // getting a ConstrainedCopy in destArr // from srcArr using method ConstrainedCopy() Console.WriteLine("Trying to get the " +"ConstrainedCopy in destArr of type int"); Console.WriteLine("but srcArr is of type String"); Array.ConstrainedCopy(srcArr, 1, destArr, 0, 3); } catch (ArgumentNullException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (RankException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (ArrayTypeMismatchException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (InvalidCastException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (ArgumentOutOfRangeException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (ArgumentException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } } // Defining the method // PrintIndexAndValues public static void PrintIndexAndValues(String[] myArr) { for (int i = 0; i < myArr.Length; i++) { Console.WriteLine("{0}", myArr[i]); } Console.WriteLine(); } }
Output:Initial Array: Sun Mon Tue Thu Trying to get the ConstrainedCopy in destArr of type int but srcArr is of type String Exception Thrown: System.ArrayTypeMismatchException
Example 5: For ArgumentOutOfRangeException
CSHARP // C# program to demonstrate // ConstrainedCopy() method // For ArgumentOutOfRangeException using System; using System.Collections.Generic; public class GFG { // Main Method public static void Main() { try { // Creating and initializing // new the String String[] srcArr = {"Sun", "Mon", "Tue", "Thu"}; // Creating the object of empty String Array String[] destArr = new String[10]; // Display the values of the myArr. Console.WriteLine("Initial Array:"); // calling the PrintIndexAndValues() // method to print PrintIndexAndValues(srcArr); // getting a ConstrainedCopy // in destArr from srcArr // using method ConstrainedCopy() Console.WriteLine("Trying to get the ConstrainedCopy" +" of length less than zero"); Array.ConstrainedCopy (srcArr,1,destArr ,0,-1); } catch (ArgumentNullException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (RankException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (ArrayTypeMismatchException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (InvalidCastException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (ArgumentOutOfRangeException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (ArgumentException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } } // Defining the method // PrintIndexAndValues public static void PrintIndexAndValues(String[] myArr) { for (int i = 0; i < myArr.Length; i++) { Console.WriteLine("{0}", myArr[i]); } Console.WriteLine(); } }
Output:Initial Array: Sun Mon Tue Thu Trying to get the ConstrainedCopy of length less than zero Exception Thrown: System.ArgumentOutOfRangeException
Example 6: For ArgumentException
CSharp // C# program to demonstrate // ConstrainedCopy() method // For ArgumentException using System; using System.Collections.Generic; public class GFG { // Main Method public static void Main() { try { // Creating and initializing new the String String[] srcArr = { "Sun", "Mon", "Tue", "Thu" }; // Creating the object of empty String Array String[] destArr = new String[10]; // Display the values of the myArr. Console.WriteLine("Initial Array:"); // calling the PrintIndexAndValues() // method to print PrintIndexAndValues(srcArr); // getting a ConstrainedCopy // in destArr from srcArr // using method ConstrainedCopy() Console.WriteLine("Trying to get the ConstrainedCopy" +" of length is greater than the number "); Console.WriteLine("of elements from sourceIndex" +" to the end of sourceArray."); Console.WriteLine(); Array.ConstrainedCopy(srcArr, 1, destArr, 0, 4); } catch (ArgumentNullException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (RankException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (ArrayTypeMismatchException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (InvalidCastException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (ArgumentOutOfRangeException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (ArgumentException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } } // Defining the method // PrintIndexAndValues public static void PrintIndexAndValues(String[] myArr) { for (int i = 0; i < myArr.Length; i++) { Console.WriteLine("{0}", myArr[i]); } Console.WriteLine(); } }
Output:Initial Array: Sun Mon Tue Thu Trying to get the ConstrainedCopy of length is greater than the number of elements from sourceIndex to the end of sourceArray. Exception Thrown: System.ArgumentException
Reference:
Similar Reads
C# | Array.Clear() Method
This method is used to set a range of elements in an array to the default value of each element type. Syntax: public static void Clear (Array array, int index, int length); Parameters: array: It is an array whose elements need to be cleared. index: It is the starting index of the range of elements t
3 min read
C# | Copy the Stack to an Array
Stack<T>.CopyTo(T[], Int32) Method is used to copy the Stack<T> to an existing 1-D Array which starts from the specified array index. Properties: The capacity of a Stack<T>is the number of elements the Stack<T> can hold. As elements are added to a Stack<T> , the capacit
2 min read
C# | Copy() Method
In C#, Copy() is a string method. It is used to create a new instance of String with the same value for a specified String. The Copy() method returns a String object, which is the same as the original string but represents a different object reference. To check its reference, use assignment operatio
2 min read
C# | Copy the entire LinkedList<T> to Array
LinkedList<T>.CopyTo(T[], Int32) method is used to copy the entire LinkedList<T> to a compatible one-dimensional Array, starting at the specified index of the target array. Syntax: public void CopyTo (T[] array, int index); Parameters: array : It is the one-dimensional Array that is the
2 min read
C# | Copying the Collection<T> elements to an array
Collection<T>.CopyTo(T[], Int32) method is used to copy the entire Collection<T> to a compatible one-dimensional Array, starting at the specified index of the target array. Syntax: public void CopyTo (T[] array, int index); Parameters: array : The one-dimensional Array that is the destin
3 min read
C# | Copy StringCollection at the specified index of array
StringCollection class is a new addition to the .NET Framework class library that represents a collection of strings. StringCollection class is defined in the System.Collections.Specialized namespace. StringCollection.CopyTo(String[], Int32) method is used to copy the entire StringCollection values
3 min read
C# | Copying BitArray elements to an Array
The BitArray class manages a compact array of bit values, which are represented as Booleans, where true indicates that the bit is on i.e, 1 and false indicates the bit is off i.e, 0. This class is contained in System.Collections namespace. BitArray.CopyTo(Array, Int32) method is used to copy the ent
3 min read
Queue.CopyTo() Method in C#
This method is used to copy the Queue elements to an existing one-dimensional Array, starting at the specified array index. The elements are copied to the Array in the same order in which the enumerator iterates through the Queue and this method is an O(n) operation, where n is Count. This method co
4 min read
Stack.CopyTo() Method in C#
This method(comes under System.Collections namespace) is used to copy the Stack to an existing 1-D Array which starts from the specified array index. The elements are copied onto the array in last-in-first-out (LIFO) order, similar to the order of the elements returned by a succession of calls to Po
2 min read
C# | Array.BinarySearch(Array, Object, IComparer) Method
This method searches for a value in a one-dimensional sorted array using a specified IComparer interface. Syntax: public static int BinarySearch(Array arr, Object val, IComparer comparer) Parameters: arr : The one-dimensional sorted array in which the search will happen. val : The object value which
4 min read