📌  相关文章
📜  C#|如何获取列表中与指定条件匹配的元素的最后一次出现

📅  最后修改于: 2021-05-29 22:16:39             🧑  作者: Mango

List .FindLast(Predicate )方法用于搜索与指定谓词定义的条件匹配的元素,并返回该元素在整个List 中的最后一次出现。

列表的属性:

  • 它与数组不同。列表可以动态调整大小,但数组则不能。
  • 列表类可以接受null作为引用类型的有效值,并且还允许重复的元素。
  • 如果计数等于容量,则列表的容量将通过重新分配内部数组而自动增加。在添加新元素之前,现有元素将被复制到新数组。

句法:

public T FindLast (Predicate match);

范围:

返回值:如果找到该元素,则此方法将返回与指定谓词定义的条件相匹配的最后一个元素,否则将返回类型T的默认值。

异常:如果匹配为null,则此方法将提供ArgumentNullException。

下面的程序说明了List .FindLast(Predicate )方法的用法:

范例1:

// C# Program to get the last occurrence
// of the element that match the specified
// conditions defined by the predicate
using System;
using System.Collections;
using System.Collections.Generic;
  
class Geeks {
  
    // function which checks whether an
    // element is even or not. Or you can
    // say it is the specified condition
    private static bool isEven(int i)
    {
        return ((i % 2) == 0);
    }
  
// Main Method
public static void Main(String[] args)
{
  
    // Creating an List of Integers
    List firstlist = new List();
  
    // Adding elements to List
    firstlist.Add(4);
    firstlist.Add(2);
    firstlist.Add(7);
    firstlist.Add(2);
    firstlist.Add(6);
    firstlist.Add(4);
    firstlist.Add(3);
  
    Console.WriteLine("Elements Present in List:\n");
  
    int p = 0;
  
    // Displaying the elements of List
    foreach(int k in firstlist)
    {
        Console.Write("At Position {0}: ", p);
        Console.WriteLine(k);
        p++;
    }
  
    Console.WriteLine(" ");
  
    // Will give the last occurrence of the
    // element of firstlist that match the
    // conditions defined by predicate
    Console.Write("Index of Last element that fullfill the conditions: ");
    Console.WriteLine(firstlist.LastIndexOf(firstlist.FindLast(isEven)));
    Console.Write("Element is: ");
    Console.Write((firstlist.FindLast(isEven)));
}
}
输出:
Elements Present in List:

At Position 0: 4
At Position 1: 2
At Position 2: 7
At Position 3: 2
At Position 4: 6
At Position 5: 4
At Position 6: 3
 
Index of Last element that fullfill the conditions: 5
Element is: 4

范例2:

// C# Program to get the last occurrence
// of the element that match the specified
// conditions defined by the predicate
using System;
using System.Collections;
using System.Collections.Generic;
  
class Geeks {
  
    // function which checks whether an
    // element is even or not. Or you can
    // say it is the specified condition
    private static bool isEven(int i)
    {
        return ((i % 2) == 0);
    }
  
// Main Method
public static void Main(String[] args)
{
  
    // Creating an List of Integers
    List firstlist = new List();
  
    // Adding elements to List
    firstlist.Add(17);
    firstlist.Add(19);
    firstlist.Add(21);
    firstlist.Add(9);
    firstlist.Add(75);
    firstlist.Add(19);
    firstlist.Add(73);
  
    Console.WriteLine("Elements Present in List:\n");
  
    int p = 0;
  
    // Displaying the elements of List
    foreach(int k in firstlist)
    {
        Console.Write("At Position {0}: ", p);
        Console.WriteLine(k);
        p++;
    }
  
    Console.WriteLine(" ");
  
    // it will return index -1 as no element
    // found in the list which specified
    // the conditions and so element value
    // will be 0 as the list contains Integers
    Console.Write("Index of Last element that fullfill the conditions: ");
    Console.WriteLine(firstlist.LastIndexOf(firstlist.FindLast(isEven)));
    Console.Write("Element is: ");
    Console.Write((firstlist.FindLast(isEven)));
}
}
输出:
Elements Present in List:

At Position 0: 17
At Position 1: 19
At Position 2: 21
At Position 3: 9
At Position 4: 75
At Position 5: 19
At Position 6: 73
 
Index of Last element that fullfill the conditions: -1
Element is: 0

参考:

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