Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

เมธอด Array.LastIndexOf() ใน C# : ค้นหาดัชนีของค่าที่พบล่าสุด

เมธอด 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)