當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C# List FindLastIndex()函數用法及代碼示例


此方法用於搜索與指定謂詞定義的條件相匹配的元素,並返回List <T>或其一部分中最後一次出現的從零開始的索引。此方法的重載列表中有3種方法:

在這裏,我們將僅討論最後兩種方法。



FindLastIndex(Int32, Predicate<T>) Method

此方法搜索與指定謂詞定義的條件匹配的元素,並返回從第一個元素到指定索引的List <T>中的元素範圍內最後一次出現的從零開始的索引。

用法: public int FindLastIndex (int start, Predicate<T> match);

參數:
start:這是從搜索開始的起始索引。
match:這是謂詞委托,它定義了搜索元素的條件。

返回值:如果找到該元素,則它將返回與參數“match”匹配指定條件的元素最後一次出現的Int32類型的從零開始的索引。如果未找到,則返回“-1”。

異常:

  • ArgumentNullException:如果匹配為空。
  • ArgumentOutOfRangeException:如果開始超出List <T>的有效索引範圍。

以下示例程序旨在說明上述方法的使用:

範例1:

// C# program to illustrate the  
// List<T>.FindLastIndex(Int32, 
// Predicate <T>) Method 
using System; 
using System.Collections.Generic; 
  
class GFG { 
      
    // Main Method 
    public static void Main() 
    { 
        // List creation 
        // List name is "PC" 
        List<string> PC = new List<string>(); 
  
        // elements in the List 
        PC.Add("Computer"); 
        PC.Add("keyboard"); 
        PC.Add("laptop"); 
        PC.Add("mouse"); 
  
        // the search will starts from index 2 
        int indx = PC.FindLastIndex(2, FindIndex); 
          
        Console.WriteLine(indx); 
    } 
  
    // Conditional method 
    private static bool FindIndex(string g) 
    { 
  
        if (g == "Computer")  
        { 
            return true; 
        } 
          
        else 
        { 
            return false; 
        } 
    } 
}

輸出:

0

範例2:

// C# program to illustrate the  
// List<T>.FindLastIndex(Int32, 
// Predicate <T>) Method 
using System; 
using System.Collections.Generic; 
  
class GFG { 
      
    // Main Method 
    public static void Main() 
    { 
          
        // List creation 
        // List name is "PC" 
        List<int> PC = new List<int>(); 
  
        // elements in the List 
        PC.Add(3); 
        PC.Add(4); 
        PC.Add(5); 
        PC.Add(6); 
  
        // condition is "FindIndex" 
        int indx = PC.FindLastIndex(2, FindIndex); 
  
        Console.WriteLine(indx); 
    } 
  
    // Conditional method 
    private static bool FindIndex(int g) 
    { 
          
        // search for "5" 
        if (g == 5) 
          
        { 
            return true; 
        } 
          
        else 
        { 
            return false; 
        } 
    } 
}

輸出:



2

範例3:在此示例中,我們使用XML文件並從起始索引中搜索項目並打印該項目的索引,如果未找到該項目,則打印“-1”,如果找到則打印索引。該項目是“GeeksForGeeks”。但是這裏我們沒有XML文件,這裏編譯器給出了一個例外。

// C# program to illustrate the  
// List<T>.FindLastIndex(Int32, 
// Predicate <T>) Method 
using System; 
using System.Collections.Generic; 
using System.Linq; 
  
class GFG { 
  
    // here List<T> contains the object "gfg" using 
    // data from a sample XML file 
    // List initialize 
    private static List<gfg> geeks = new List<gfg>(); 
  
    public static void Main() 
    { 
  
        // if the item is found then 
        // it prints the index 
        // if not found prints "-1" 
        int x = geeks.FindLastIndex(3, FindGFG); 
        Console.WriteLine(x); 
          
    } 
  
    // conditional method 
    private static bool FindGFG(gfg g) 
    { 
  
         // item is "GeeksForGeeks" 
        if (g.G == "GeeksForGeeks") 
        { 
            return true; 
        } 
  
        else
        { 
            return false; 
        } 
    } 
} 
  
public class gfg { 
      
    public string G 
    { 
        get; 
        set; 
    } 
}

運行時錯誤:

Unhandled Exception:
System.ArgumentOutOfRangeException:ArgumentOutOfRange_Index
Parameter name:startIndex

FindLastIndex(Int32, Int32, Predicate<T>) Method

此方法搜索與指定謂詞定義的條件匹配的元素,並返回整個List中最後一次出現的從零開始的索引,並且該列表包含指定數目的元素並在指定索引處結束。

用法: public int FindLastIndex (int startIndex, int count, Predicate<T> match);

參數:
startIndex:它是向後搜索的從零開始的索引。
count:這是要搜索的部分中元素的數量。
match:Predicate <T>委托定義了要搜索的元素的條件。

返回值:如果找到該元素,則它將返回最後一個與參數“match”匹配指定條件的元素的Int32類型的從零開始的索引。如果未找到,則返回“-1”。

異常:

  • ArgumentNullException:如果“match”為null。
  • ArgumentOutOfRangeException:如果“startIndex”超出範圍,或者“count”小於0(零),或者“startIndex”和“count”在列表中未指定有效部分

例:

// C# Program to illustrate the  
// FindLastIndex(Int32, Int32,  
// Predicate<T>) Method 
using System; 
using System.Collections.Generic; 
    
class GFG 
{ 
    public static void Main() 
    { 
        // List name is "mylist" 
        List<string> mylist = new List<string>(); 
            
        // Elements in the List 
        mylist.Add("C"); 
        mylist.Add("C++"); 
        mylist.Add("Java"); 
        mylist.Add("Python"); 
        mylist.Add("C#"); 
        mylist.Add("HTML"); 
        mylist.Add("Java"); 
        mylist.Add("PHP"); 
            
        // the search will starts from index 2 
        // the number of element is 3 
        int indx = mylist.FindLastIndex(2, 3, FindIndex); 
          
        Console.WriteLine("The index of Java is:"+indx); 
    } 
        
    // Conditional method 
    private static bool FindIndex(string g) 
    { 
    
        if (g == "Java") 
        { 
            return true; 
        } 
        else
        { 
            return false; 
        } 
    } 
}

輸出:

The index of Java is:2

注意:

  • 從startIndex開始到第一個元素結束向後搜索List <T>。
  • Predicate <T>是方法的委托,如果傳遞給它的對象與委托中定義的條件匹配,則該方法返回true。當前List <T>的元素分別傳遞給Predicate <T>委托。
  • 此方法執行線性搜索;因此,此方法是O(n)運算,其中n是從List <T>的開頭到開頭的元素數。



相關用法


注:本文由純淨天空篩選整理自SoumikMondal大神的英文原創作品 List FindLastIndex() Method in C# | Set -2。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。