此方法用于搜索与指定谓词定义的条件匹配的元素,并返回List
- FindLastIndex(Predicate
)方法 - FindLastIndex(Int32,Predicate
)方法 - FindLastIndex(Int32,Int32,Predicate
)方法
在这里,我们将仅讨论第一种方法,即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__