Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Phương thức String.Copy() trong C#

Phương thức String.Copy() trong C# được dùng để tạo một instance mới của String có cùng giá trị với một String được chỉ định. Khác với gán tham chiếu, Copy() tạo ra một đối tượng chuỗi hoàn toàn mới trong bộ nhớ.

Cú pháp

public static string Copy(string str);

Tham số str là chuỗi cần sao chép.

Ví dụ 1: Sao chép và so sánh

using System;

public class Demo
{
    public static void Main(string[] args)
    {
        string s1 = "Amy";
        string s2 = "Katie";
        string s3 = String.Copy(s2);

        Console.WriteLine("Chuỗi 1 = " + s1);
        Console.WriteLine("Chuỗi 2 = " + s2);
        Console.WriteLine("Hai chuỗi có bằng nhau? = " + s1.Equals(s2));
        Console.WriteLine("s2 và s3 (copy) có bằng nhau? = " + s2.Equals(s3));

        // So sánh thứ tự (ordinal)
        Console.WriteLine(string.CompareOrdinal(s1, s2)); // -10 (s1 < s2)
        Console.WriteLine(string.CompareOrdinal(s2, s3)); // 0 (bằng nhau)
    }
}

Kết quả

Chuỗi 1 = Amy
Chuỗi 2 = Katie
Hai chuỗi có bằng nhau? = False
s2 và s3 (copy) có bằng nhau? = True
-10
0

Ví dụ 2: Minh họa bản sao độc lập

using System;

public class Demo
{
    public static void Main(string[] args)
    {
        string s1 = "Gary";
        string s2 = "Gary";
        string s3 = String.Copy(s2);

        Console.WriteLine("Chuỗi 1 = " + s1);
        Console.WriteLine("Chuỗi 2 = " + s2);
        Console.WriteLine("s1 và s2 bằng nhau? = " + s1.Equals(s2));
        Console.WriteLine("s2 và s3 bằng nhau? = " + s2.Equals(s3));

        // Thay đổi s3 - không ảnh hưởng s2
        s3 = "Harry";
        Console.WriteLine("Sau khi gán s3 = 'Harry':");
        Console.WriteLine("s2 và s3 bằng nhau? = " + s2.Equals(s3));
    }
}

Kết quả

Chuỗi 1 = Gary
Chuỗi 2 = Gary
s1 và s2 bằng nhau? = True
s2 và s3 bằng nhau? = True
Sau khi gán s3 = 'Harry':
s2 và s3 bằng nhau? = False

Sự khác biệt: Copy() vs Gán (=) vs Clone()

Cách làm Tạo đối tượng mới? Ghi chú
String.Copy(s) Có Tạo instance String mới với cùng giá trị
s2 = s1 Không Chỉ gán tham chiếu, trỏ cùng đối tượng
(string)s1.Clone() Có Trả về object, cần ép kiểu. Ít dùng hơn Copy()

Lưu ý

  • Vì String là bất biến (immutable), việc "sao chép" hiếm khi cần thiết cho mục đích sửa đổi.
  • Copy() hữu ích khi cần đảm bảo instance riêng biệt cho API yêu cầu đối tượng khác (ví dụ: interop, serialization).
  • Ném ArgumentNullException nếu str là null.