한 가지 유의해야할 점은 Clone 함수는 얕은 복사이다.
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
public class A
{
public float value
{ get; set; }
public A(float value)
{
this.value = value;
}
}
public class Test
{
static readonly int mk_size = 10;
static void Print(A[] arr)
{
foreach (var item in arr)
{
Console.Write($"{item.value} ");
}
Console.WriteLine();
}
static void Delete(A[] arr)
{
foreach (var item in arr)
item.Dispose();
}
public static void Main()
{
A[] arr1 = new A[mk_size];
A[] arr2 = new A[mk_size];
A[] arr3 = new A[mk_size];
for (int i = 0; i < mk_size; i++)
{
arr1[i] = new A(i);
arr2[i] = new A(MathF.Pow(i, 2));
arr3[i] = new A(0);
}
Console.WriteLine("Array.Copy 함수");
Console.WriteLine("\n복사 전 : ");
Print(arr1);
Print(arr2);
Console.WriteLine("\n복사 후 : ");
Array.Copy(arr1, arr2, mk_size);
Print(arr1);
Print(arr2);
Console.WriteLine("\n.CopyTo 함수");
Console.WriteLine("\n복사 전 : ");
Print(arr3);
Console.WriteLine("\n복사 후 : ");
arr1.CopyTo(arr3, 0);
Print(arr3);
Console.WriteLine("\n.Clone 함수");
Console.WriteLine("\n복사 전 : ");
Print(arr1);
Console.WriteLine("\n복사 후 : ");
arr1 = (A[])arr2.Clone();
Print(arr1);
}
}
'프로그래밍 언어 > C#' 카테고리의 다른 글
C# 전처리기의 모든것 (0) | 2022.07.04 |
---|---|
C# Action/Func/Predicate (0) | 2022.07.04 |
C# 얕은 복사 깊은 복사 (0) | 2022.07.01 |
C# ?? 및 ??=, ?. 연산자 (0) | 2022.06.29 |
C# static (정적) 메서드와 클래스 (0) | 2022.06.24 |