Giới thiệu
Phương thức IndexOf(T item) của List<T> trả về chỉ số 0-based của lần xuất hiện đầu tiên của item. Trả về -1 nếu không tìm thấy. Sử dụng EqualityComparer<T>.Default để so sánh.
Ví dụ cơ bản
Listval = new List { 35, 55, 68 }; int index = val.IndexOf(68); // 2
Ví dụ hoàn chỉnh
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
List val = new List { 35, 55, 68 };
int index = val.IndexOf(68);
Console.WriteLine(index); // 2
}
}
Kết quả
2
Các nạp chồng IndexOf
IndexOf(T item)- tìm từ đầu.IndexOf(T item, int index)- tìm từ index cho đến cuối.IndexOf(T item, int index, int count)- tìm trong đoạn [index, index+count).
LastIndexOf
Tìm lần xuất hiện cuối cùng:
Listlist = new List { 1, 2, 3, 2, 4 }; int first = list.IndexOf(2); // 1 int last = list.LastIndexOf(2); // 3
Lưu ý
- Với kiểu tham chiếu, so sánh tham chiếu (reference equality) trừ khi class override Equals.
- Với struct/primitive, so sánh giá trị.
- Phức tạp O(n) - duyệt tuyến tính.
- Nếu cần tra cứu nhanh O(1), cân nhắc Dictionary<T, int> lưu index.
Ví dụ tìm tất cả vị trí
Listlist = new List { 1, 2, 3, 2, 4 }; List indices = new List (); int index = -1; while ((index = list.IndexOf(2, index + 1)) != -1) { indices.Add(index); } // indices = [1, 3]