Index và Range trong Array

Xác định index và range của array trong csharp 8.0

Giới thiệu

Kể từ csharp 8.0 trở đi (Unity phiên bản 2020.2 trở lên). Bạn có thể sử dụng cú pháp như thế này đối với mảng

1
2
3
4
5
6
int[] arr = new int[] {0, 1, 2, 3, 4, 5};

...

arr[^1]
arr[1..2]

Bạn có thể tham khảo từ trang chủ của microsoft

Bài viết này sẽ giúp bạn tóm tắt lại cú pháp để thuận tiện cho việc sử dụng

Chỉ định một chỉ mục (index)

Phần tử đầu tiên là 0 (arr[0]) 1, 2,… là các phần tử tiếp theo. điều này cũng đúng nếu duyệt mảng theo chiều ngược lại vì vậy hãy cẩn thận.

1
2
3
4
5
6
7
8
int[] arr = new int[] {
    // index from start    index from end
0,  // 0                   ^5 
1,  // 1                   ^4 
2,  // 2                   ^3 
3,  // 3                   ^2 
4   // 4                   ^1 
};

arr[i]

Tham chiếu đến phần tử thứ i kể từ đầu mảng

1
2
3
4
int[] arr = new int[] {0, 1, 2, 3, 4};

// x sẽ có giá trị là 0 sau khi chạy câu lệnh dưới đây.
int x = arr[0];

arr[^i]

Tham chiếu đến phần tử i - 1 (hay phần tử thứ i từ cuối)

1
2
3
4
int[] arr = new int[] {0, 1, 2, 3, 4};

// x sẽ có giá trị là 4 sau khi chạy câu lệnh dưới đây.
int x = arr[^i];

Chỉ định một phạm vi (range)

arr[i..j]

Kết quả trả về từ phần tử thứ i đến phần tử thứ j - 1

1
2
3
4
int[] arr = new int[] {0, 1, 2, 3, 4};

// x sẽ chứa giá trị 1 và 2 sau khi chạy câu lệnh dưới đây.
int x = arr[1..3];

Lưu ý rằng nó không bao gồm phần tử thứ j

arr[i..^j]

Từ phần tử thứ i đến phần tử thứ j từ cuối

1
2
3
4
int[] arr = new int[] {0, 1, 2, 3, 4};

// x sẽ chứa giá trị 1, 2, 3 sau khi chạy câu lệnh dưới đây.
int x = arr[1..^1];

arr[i..]

Từ phần tử thứ i đến phần tử cuối cùng

1
2
3
4
int[] arr = new int[] {0, 1, 2, 3, 4};

// x sẽ chứa giá trị 1, 2, 3, 4 sau khi chạy câu lệnh dưới đây.
int x = arr[1..];

arr[..j]

Từ phần tử đầu tiên cho đến phần tử thứ j - 1

1
2
3
4
int[] arr = new int[] {0, 1, 2, 3, 4};

// x sẽ chứa giá trị 0 sau khi chạy câu lệnh dưới đây.
int x = arr[..1];

arr[..^j]

Từ phần tử đầu tiên cho đến phần tử thứ j từ cuối

1
2
3
4
int[] arr = new int[] {0, 1, 2, 3, 4};

// x sẽ chứa giá trị 0, 1, 2, 3 sau khi chạy câu lệnh dưới đây.
int x = arr[..^1];

arr[^i..]

Từ phần tử thứ i từ cuối đến phần tử cuối cùng

1
2
3
4
int[] arr = new int[] {0, 1, 2, 3, 4};

// x sẽ chứa giá trị 4 sau khi chạy câu lệnh dưới đây.
int x = arr[^1..];

arr[..]

trả về toàn bộ mảng (từ phần tử đầu tiên đến phần tử cuối cùng)

1
2
3
4
int[] arr = new int[] {0, 1, 2, 3, 4};

// x sẽ chứa giá trị 0, 1, 2, 3, 4 sau khi chạy câu lệnh dưới đây.
int x = arr[..];

Lượt nghé thăm