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# Tutorial C# (pronounced "C-sharp") is a modern, versatile, object-oriented programming language developed by Microsoft in 2000 that runs on the .NET Framework. Whether you're creating Windows applications, diving into Unity game development, or working on enterprise solutions, C# is one of the top choices fo
4 min read
Introduction to .NET Framework The .NET Framework is a software development framework developed by Microsoft that provides a runtime environment and a set of libraries and tools for building and running applications on Windows operating systems. The .NET framework is primarily used on Windows, while .NET Core (which evolved into
6 min read
C# Interview Questions and Answers C# is the most popular general-purpose programming language and was developed by Microsoft in 2000, renowned for its robustness, flexibility, and extensive application range. It is simple and has an object-oriented programming concept that can be used for creating different types of applications.Her
15+ min read
C# Dictionary Dictionary in C# is a generic collection that stores key-value pairs. The working of Dictionary is quite similar to the non-generic hashtable. The advantage of a Dictionary is, that it is a generic type. A dictionary is defined under System.Collections.Generic namespace. It is dynamic in nature mean
5 min read
C# List Class In C#, the List<T> class represents the list of objects that can be accessed by index. It comes under the System.Collections.Generic namespace. List class can be used to create a collection of different types like integers, strings, etc. List<T> class also provides the methods to search,
7 min read
C# Delegates A delegate is an object which refers to a method or you can say it is a reference type variable that can hold a reference to the methods. It provides a way which tells which method is to be called when an event is triggered. For example, if you click on a Button on a form (Windows Form application),
6 min read
ASP.NET Interview Questions and Answer ASP.NET is a popular framework by Microsoft for building fast and scalable web applications. It allows developers to create dynamic websites, services, and apps, using server-side code and offering a user-friendly experience. Trusted by companies like Microsoft, Dell, and Accenture, ASP.NET is used
15+ min read
C# .NET Framework (Basic Architecture and Component Stack) C# (C-Sharp) is a modern, object-oriented programming language developed by Microsoft in 2000. It is a part of the .NET ecosystem and is widely used for building desktop, web, mobile, cloud, and enterprise applications. This is originally tied to the .NET Framework, C# has evolved to be the primary
6 min read
C# Data Types Data types specify the type of data that a valid C# variable can hold. C# is a strongly typed programming language because in C# each type of data (such as integer, character, float, and so forth) is predefined as part of the programming language and all constants or variables defined for a given pr
7 min read
C# Arrays An array is a group of like-typed variables that are referred to by a common name. And each data item is called an element of the array. The data types of the elements may be any valid data type like char, int, float, etc. and the elements are stored in a contiguous location. Length of the array spe
8 min read