Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# String.Copy() 메서드 – 문자열 복사 방법과 예제 총정리

C#의 Copy() 메서드는 지정된 문자열(String)과 동일한 값을 가지는 새로운 String 인스턴스를 생성하는 데 사용됩니다. 즉, 기존 문자열을 복사하여 원본과 독립적인 새 문자열 객체를 만들 수 있습니다.

구문(Syntax)

public static string Copy (string s);

위 구문에서 매개변수 s는 복사할 대상 문자열입니다. Copy()는 정적(static) 메서드이므로 String.Copy() 형태로 호출합니다.

예제 1

using System;
public class Demo {
   public static void Main(string[] args) {
      string s1 = "Amy";
      string s2 = "Katie";
      string s3 = String.Copy(s2);
      Console.WriteLine("String1 = "+s1);
      Console.WriteLine("String2 = "+s2);
      Console.WriteLine("두 문자열이 같은가? = "+s1.Equals(s2));
      Console.WriteLine("두 문자열이 같은가? = "+s2.Equals(s3));
      Console.WriteLine(string.CompareOrdinal(s1, s2));
      Console.WriteLine(string.CompareOrdinal(s2, s3));
   }
}

출력 결과

String1 = Amy
String2 = Katie
두 문자열이 같은가? = False
두 문자열이 같은가? = True
-10
0

설명: 위 예제에서 s3s2("Katie")를 복사해 만든 새로운 문자열입니다. 따라서 s2.Equals(s3)True를 반환하고, CompareOrdinal(s2, s3)의 결과도 0(동일함)입니다. 반면 s1("Amy")과 s2("Katie")는 서로 다른 문자열이므로 False와 -10이 출력됩니다.

예제 2

using System;
public class Demo {
   public static void Main(string[] args) {
      string s1 = "Gary";
      string s2 = "Gary";
      string s3 = String.Copy(s2);
      Console.WriteLine("String1 = "+s1);
      Console.WriteLine("String2 = "+s2);
      Console.WriteLine("s1과 s2가 같은가? = "+s1.Equals(s2));
      Console.WriteLine("s2와 s3가 같은가? = "+s2.Equals(s3));
      s3 = "Harry";
      Console.WriteLine("s2와 s3가 같은가? = "+s2.Equals(s3));
   }
}

출력 결과

String1 = Gary
String2 = Gary
s1과 s2가 같은가? = True
s2와 s3가 같은가? = True
s2와 s3가 같은가? = False

설명: 처음에는 s3s2를 복사한 값이므로 두 문자열이 같아 True가 출력됩니다. 그러나 이후 s3에 "Harry"라는 새 값을 할당하면 s2와 더 이상 같지 않으므로 False가 출력됩니다. 이처럼 Copy()로 생성한 복사본은 원본과 독립적인 별개의 문자열임을 확인할 수 있습니다.

참고 사항

.NET Core 3.0부터 String.Copy() 메서드는 사용되지 않음(obsolete)으로 표시되었습니다. C#의 문자열은 불변(immutable)이므로 명시적인 복사가 실질적으로 필요하지 않으며, 단순히 다른 변수에 할당하는 것만으로 충분합니다. 최신 코드에서는 String.Copy() 대신 일반 할당 연산자(=)를 사용하는 것이 권장됩니다.