此方法用于从指定的源索引处开始的数组中复制一系列元素,并将其粘贴到从指定的目标索引处开始的另一个Array中。如果复制未完全成功,则确保撤消所有更改。
用法:
public static void ConstrainedCopy (Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length);
参数:
-
sourceArray:它是包含要复制的数据的数组。
sourceIndex:它是32位整数,代表复制开始的sourceArray中的索引。
destinationArray:是接收数据的数组。
destinationIndex:这是一个32位整数,代表destinationArray中存储开始的索引。
length:它是32位整数,代表要复制的元素数。
异常:
- ArgumentNullException:如果sourceArray或destinationArray为null。
- RankException:如果sourceArray和destinationArray具有不同的等级。
- ArrayTypeMismatchException:如果sourceArray类型既不相同,也不派生自destinationArray类型。
- InvalidCastException:无法将sourceArray中的至少一个元素强制转换为destinationArray的类型。
- ArgumentOutOfRangeException:如果sourceIndex小于sourceArray第一维的下限,或者destinationIndex小于destinationArray第一维的下限,或者length小于零。
- ArgumentException:如果长度大于从sourceIndex到sourceArray末尾的元素数,或者大于从destinationIndex到destinationArray末尾的元素数。
以下示例程序旨在说明Array.ConstrainedCopy(Array,Int32,Array,Int32,Int32)方法的使用:
示例1:
// 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();
}
}
输出:
Initial Array: Sun Mon Tue Thu Destination Array: Mon Tue Thu
示例2:对于ArgumentNullException
// 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();
}
}
输出:
Trying to get the ConstrainedCopy while srcArr is null Exception Thrown: System.ArgumentNullException
示例3:对于RankException
// 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();
}
}
输出:
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
示例4:对于ArrayTypeMismatchException
// 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();
}
}
输出:
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
示例5:对于ArgumentOutOfRangeException
// 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();
}
}
输出:
Initial Array: Sun Mon Tue Thu Trying to get the ConstrainedCopy of length less than zero Exception Thrown: System.ArgumentOutOfRangeException
示例6:对于ArgumentException
// 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();
}
}
输出:
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
参考:
相关用法
- C# DateTimeOffset.Add()用法及代码示例
- C# String.Contains()用法及代码示例
- C# Math.Sin()用法及代码示例
- C# Math.Cos()用法及代码示例
- C# Dictionary.Add()用法及代码示例
- C# Math.Tan()用法及代码示例
- C# Math.Abs()方法用法及代码示例
- C# Math.Exp()用法及代码示例
- C# Math.Abs()函数用法及代码示例
注:本文由纯净天空筛选整理自RohitPrasad3大神的英文原创作品 C# | Array.ConstrainedCopy() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。