📜  在C#中列出FindLastIndex()方法。设置-1

📅  最后修改于: 2021-05-29 14:36:43             🧑  作者: Mango

此方法用于搜索与指定谓词定义的条件匹配的元素,并返回List 或其一部分中最后一次出现的从零开始的索引。此方法的重载列表中有3种方法:

  • FindLastIndex(Predicate )方法
  • FindLastIndex(Int32,Predicate )方法
  • FindLastIndex(Int32,Int32,Predicate )方法

在这里,我们将仅讨论第一种方法,即FindLastIndex(Predicate )

List .FindLastIndex(Predicate )方法搜索与指定谓词定义的条件匹配的元素,并返回整个List 中最后一次出现的从零开始的索引。

句法:

public int FindLastIndex (Predicate  match);

在此,匹配是谓词委托,该委托定义了要搜索的元素的条件。

返回值:如果找到该元素,则返回参数“ match”匹配指定条件的最后一个元素的int或Int32类型的从零开始的索引。如果未找到,则返回“ -1”。

异常:如果match为null,则此方法将引发ArgumentNullException。

示例1:在此示例中,创建一个包含某些元素的名为“ PC”的列表。我们的任务是找到一个名为“ Computer”的元素并打印其索引。

// C# Program to illustrate the 
// FindLastIndex(Predicate)
// Method
using System;
using System.Collections.Generic;
  
class GFG {
  
    // Main Method
    public static void Main()
    {
  
        // List creation
        // List name is "PC"
        List PC = new List();
  
        // elements in the List
        PC.Add("mouse");
        PC.Add("keyboard");
        PC.Add("laptop");
        PC.Add("Computer");
  
        // using the method
        int indx = PC.FindLastIndex(predi);
  
        Console.WriteLine(indx);
    }
  
    // Conditional method
    private static bool predi(string g)
    {
  
        if (g == "Computer") {
            return true;
        }
        else {
            return false;
        }
    }
}
输出:
3

示例2:此示例是上一示例的扩展形式。在此示例中,我们使用XML文件并搜索一个项目并打印该项目的索引。如果找不到该项目,则打印“ -1”,如果找到,则打印索引。该项目是\“ GeeksForGeeks”。

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

笔记:

  • 从最后一个元素开始向后搜索第一个元素,然后向后搜索List
  • Predicate 是方法的委托,如果传递给它的对象与委托中定义的条件匹配,则该方法返回true。当前List 的元素分别传递给Predicate 委托。
  • 该方法执行线性搜索;因此,此方法是O(n)运算,其中n是Count。

参考:

  • https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.generic.list-1.findlastindex?view=netframework-4.7.2#System_Collections_Generic_List_1_FindLastIndex_System_Predicate__0__