Menu
CoddyTech

Sao chép mảng

Thuộc phần Kiến thức nền tảng trong hành trình C# của Coddy. Bài học 58 trên 70.

Để sao chép các phần tử từ mảng này sang mảng khác, hãy dùng Array.Copy. Hàm này nhận năm đối số:

Array.Copy(source, sourceIndex, destination, destinationIndex, length);

Hàm này lấy length phần tử từ source, bắt đầu tại sourceIndex, rồi ghi chúng vào destination, bắt đầu tại destinationIndex. Mảng đích phải tồn tại sẵn và đủ lớn.

Đối số cuối cùng là số lượng: số phần tử cần sao chép, không phải vị trí dừng.

int[] scores = {90, 75, 60, 85};
int[] firstTwo = new int[2];
Array.Copy(scores, 0, firstTwo, 0, 2);
// firstTwo sẽ là {90, 75}

destinationIndex là vị trí phần tử đầu tiên được sao chép sẽ nằm. Dùng source.Length làm số lượng sẽ sao chép toàn bộ mảng, bất kể kích thước của mảng:

int[] source = {1, 2, 3};
int[] destination = new int[6];
Array.Copy(source, 0, destination, 3, source.Length);
// destination sẽ là {0, 0, 0, 1, 2, 3}

Để nối mảng này sau mảng kia, hãy sao chép mảng thứ hai vào vị trí ngay sau phần tử cuối cùng của mảng thứ nhất. Vị trí đó là Length của mảng thứ nhất:

int[] first = {1, 2};
int[] second = {7, 8, 9};
int[] all = new int[first.Length + second.Length];
Array.Copy(first, 0, all, 0, first.Length);
Array.Copy(second, 0, all, first.Length, second.Length);
// all sẽ là {1, 2, 7, 8, 9}

Khi cả hai mảng đều bắt đầu ở chỉ số 0, có cách viết ngắn hơn, Array.Copy(source, destination, length):

int[] source = {4, 5, 6, 7};
int[] destination = new int[3];
Array.Copy(source, destination, 3);
// destination sẽ là {4, 5, 6}
challenge icon

Thử thách

Dễ

Tạo một phương thức tên là AddToEnd, nhận một mảng chuỗi và một chuỗi item. Phương thức trả về một mảng mới chứa mọi phần tử của mảng theo đúng thứ tự, đồng thời thêm item vào cuối.

Ví dụ, AddToEnd(new string[] {"a", "b", "c"}, "d") trả về ["a", "b", "c", "d"].

Dùng Array.Copy() để sao chép các phần tử vào mảng mới.

Định dạng đầu vào (2 dòng):

  • Dòng 1: các phần tử của mảng, cách nhau bằng dấu phẩy (ví dụ: a,b,c)
  • Dòng 2: phần tử cần thêm (ví dụ: d)

Định dạng đầu ra: các phần tử của mảng mới, cách nhau bằng dấu phẩy và một khoảng trắng (ví dụ: a, b, c, d)

Tự làm thử

using System;

public class Program {
    public static string[] AddToEnd(string[] arr, string item) {
        // Viết code ở đây
    }

    public static void Main(string[] args) {
        string[] arr = Console.ReadLine().Split(',');
        string item = Console.ReadLine();
        string[] result = AddToEnd(arr, item);
        Console.WriteLine(string.Join(", ", result));
    }
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch C# online