当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C# Array.ConstrainedCopy()用法及代码示例


此方法用于从指定的源索引处开始的数组中复制一系列元素,并将其粘贴到从指定的目标索引处开始的另一个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

参考:



相关用法


注:本文由纯净天空筛选整理自RohitPrasad3大神的英文原创作品 C# | Array.ConstrainedCopy() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。