เมธอด Array.LastIndexOf() ใน C# ใช้ค้นหา object ที่ระบุ และคืนค่าดัชนี (index) ของการพบครั้งล่าสุด (last occurrence) ภายในอาร์เรย์หนึ่งมิติ (one-dimensional Array) ทั้งหมด
รูปแบบไวยากรณ์ (Syntax)
public static int LastIndexOf(Array arr, object val);
arr: อาร์เรย์หนึ่งมิติที่ต้องการค้นหาval: object ที่ต้องการค้นหาใน arr
ตัวอย่างที่ 1: ค้นหาในอาร์เรย์สตริง
using System;
public class Demo
{
public static void Main()
{
string[] strArr = { "John", "Tim", "Fedric", "Gary", "Harry", "Damien", "David", "Harry" };
// เรียงลำดับก่อน (BinarySearch ต้องการอาร์เรย์ที่เรียงแล้ว)
Array.Sort(strArr);
Console.WriteLine("Array elements...");
foreach (string s in strArr)
{
Console.WriteLine(s);
}
// BinarySearch คืนค่าดัชนีของค่าที่พบ (อาจไม่ใช่ครั้งล่าสุดหากมีซ้ำ)
Console.Write("Element Gary is at index = " + Array.BinarySearch(strArr, "Gary"));
Console.Write("\nElement Tom is at index = " + Array.BinarySearch(strArr, "Tom"));
// LastIndexOf คืนค่าดัชนีของค่าที่พบครั้งล่าสุด
Console.Write("\nLast index of element Harry = " + Array.LastIndexOf(strArr, "Harry"));
}
}
ผลลัพธ์
Array elements... Damien David Fedric Gary Harry Harry John Tim Element Gary is at index = 3 Element Tom is at index = -9 Last index of element Harry = 5
ตัวอย่างที่ 2: ค้นหาในอาร์เรย์จำนวนเต็ม
using System;
public class Demo
{
public static void Main()
{
int[] intArr = { 5, 10, 15, 20, 15, 25, 30 };
Array.Sort(intArr);
Console.WriteLine("Array elements...");
foreach (int i in intArr)
{
Console.WriteLine(i);
}
Console.Write("Element 25 is at index = " + Array.BinarySearch(intArr, 20));
Console.Write("\nLast index of element 15 = " + Array.LastIndexOf(intArr, 15));
Console.Write("\nLast index of element 50 = " + Array.LastIndexOf(intArr, 50));
}
}
ผลลัพธ์
Array elements... 5 10 15 15 20 25 30 Element 25 is at index = 4 Last index of element 15 = 3 Last index of element 50 = -1
สรุป
- คืนค่า
-1หากไม่พบค่าที่ค้นหา - ต่างจาก
Array.IndexOf()ที่คืนค่าครั้งแรกที่พบ - ทำงานกับอาร์เรย์หนึ่งมิติเท่านั้น
- ไม่จำเป็นต้องเรียงลำดับอาร์เรย์ก่อนการค้นหา (ต่างจาก BinarySearch)