您的位置:

C# Find函数详解

C# Find函数是一种非常常用的函数之一,它用于从数组或列表容器中查找一个元素。在本文中,我们将详细了解C# Find函数的各种用法、注意事项以及代码实例。

一、查找数组中元素的用法

C#提供了多种可用于查找数组中元素的方法。其中,Find、FindIndex、FindLast、FindLastIndex和FindAll等方法分别用于特定类型的数组。

1、查找一个整数元素

int[] array = {99, 2, 34, 56, 39, 53, 32, 92};

//使用Lambda表达式查找数组中元素
int element = array.Find(x => x % 2 == 0 && x > 50);
Console.WriteLine("找到中符合条件的第一个元素是:{0}", element);

在以上代码中,我们使用Lambda表达式查找数组中符合指定条件的第一个元素:

1)%表示取模运算,即求余数;

2)&&表示逻辑AND运算;

3)Lambda表达式中x代表当前正在查找的元素。

2、查找一个字符串元素

string[] array = {"apple", "banana", "orange", "grape", "pear"};

//使用Lambda表达式查找数组中元素
string element = array.Find(x => x.StartsWith("o"));
Console.WriteLine("找到中符合条件的第一个元素是:{0}", element);

在以上代码中,我们使用Lambda表达式查找数组中以字母"o"开头的字符串元素。

3、查找一个类对象元素

如果要查找一个列表容器中的类对象元素,那么我们需要先定义一个类,并重写它的Equals方法:

public class Student
{
    public string Name { get; set; }
    public int Age { get; set; }

    public override bool Equals(object obj)
    {
        if (obj == null) return false;
        Student objAsStudent = obj as Student;
        if (objAsStudent == null) return false;
        else return Equals(objAsStudent);
    }

    public bool Equals(Student other)
    {
        if (other == null) return false;
        return (this.Name.Equals(other.Name) && this.Age.Equals(other.Age));
    }

    public override int GetHashCode()
    {
        return this.Age.GetHashCode() ^ this.Name.GetHashCode();
    }
}

重写Equals方法后,我们就可以这样查找一个类对象元素:

List list = new List
   ();
list.Add(new Student() { Name = "Tom", Age = 20 });
list.Add(new Student() { Name = "Lucy", Age = 22 });
list.Add(new Student() { Name = "John", Age = 23 });

//使用Lambda表达式查找列表中元素
Student student = list.Find(x => x.Name == "John" && x.Age == 23);
Console.WriteLine("找到中符合条件的第一个元素是:{0}", student.Name);

   
  

二、注意事项

在使用C# Find函数时,需要注意以下几点:

1、数组类型需要匹配

C#不支持为不同类型的元素进行查找操作。例如,用于查找字符串元素的Find方法不能用于整数类型的数组,并且用于查找整数元素的Find方法不能用于字符串类型的数组。

2、未查找到元素

如果未找到符合条件的元素,将返回数组或列表容器中元素类型的默认值。例如,如果要查找一个整数元素却未查找到,将返回0。

3、Lambda表达式中无法使用break关键字

在Lambda表达式中,由于没有循环体,因此无法使用break等跳出循环的关键字。

三、其他用法

C# Find函数还有其他有用的用法。例如,我们可以使用FindAll方法查找列表中符合条件的所有元素:

1、查找所有整数元素

int[] array = {99, 2, 34, 56, 39, 53, 32, 92};

//使用Lambda表达式查找数组中符合条件的所有元素
var elements = array.FindAll(x => x % 2 == 0);
Console.Write("找到中符合条件的元素有:");
foreach (var element in elements)
{
    Console.Write(element + ",");
}

2、查找所有字符串元素

string[] array = {"apple", "banana", "orange", "grape", "pear"};

//使用Lambda表达式查找数组中符合条件的所有元素
var elements = array.FindAll(x => x.Length > 5);
Console.Write("找到中符合条件的元素有:");
foreach (var element in elements)
{
    Console.Write(element + ",");
}

结束语

以上就是C# Find函数的详尽解析,包括用法、注意事项以及代码示例。通过本文的学习,我们相信读者已经对C# Find函数有了更深入的了解。