Csharp/CSharp Tutorial/Data Structure/Array Clone

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Clone array with reference data inside

<source lang="csharp">using System; class MyClass {

  public int Value = 5;

} class MainClass {

  static void Main()
  {
     MyClass[] orignalArray = new MyClass[3] { new MyClass(), new MyClass(), new MyClass() }; 
     
     MyClass[] cloneArray = (MyClass[])orignalArray.Clone();                   
     cloneArray[0].Value = 1;                               
     cloneArray[1].Value = 2;
     cloneArray[2].Value = 3;
     foreach (MyClass a in orignalArray)
        Console.WriteLine(a.Value);
     foreach (MyClass a in cloneArray)
        Console.WriteLine(a.Value);
  }

}</source>

1
2
3
1
2
3

Clone Value Array

<source lang="csharp">using System; class MainClass {

  static void Main()
  {
     int[] orignalArray = { 1, 2, 3 };                    
     int[] cloneArray = (int[])orignalArray.Clone();         
     cloneArray[0] = 10;
     cloneArray[1] = 20;
     cloneArray[2] = 30;
     foreach (int i in orignalArray)
        Console.WriteLine(i);
     foreach (int i in cloneArray)
        Console.WriteLine(i);
  }

}</source>

1
2
3
10
20
30

Cloning arrays

<source lang="csharp">using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Text; class GoodMonthType {

   private static readonly string[] monthConstants = new string[] {
       "January", "February", "March", "April", "May", "June",
       "July", "August", "September", "October", "November", "December"
   };
   public string[] Months
   {
       get { return (string[])monthConstants.Clone(); }
   }
   public IEnumerable<string> MonthsEnumerable
   {
       get { return Array.AsReadOnly<string>(monthConstants); }
   }

} public class MainClass {

   public static void Main()
   {
       GoodMonthType mt2 = new GoodMonthType();
       
       foreach (string m in mt2.Months) {
           Console.WriteLine(m);
       }
       string[] months2 = mt2.Months;
       months2[3] = "Not-April";
       foreach (string m in mt2.Months) {
           Console.WriteLine(m);
       }
   }

}</source>

January
February
March
April
May
June
July
August
September
October
November
December
January
February
March
April
May
June
July
August
September
October
November
December