C# Contains(Object):确定集合是否包含指定对象

  • Post category:C#

C# Contains(Object) 方法介绍

C# Contains(Object) 方法用来判断一个集合(Collection)中是否包含指定元素。如果包含则返回 true,否则返回 false。该方法可以用于数组、列表、集合等集合类型,也可以用于字典中的 Key 集合。

方法声明

以下为 Contains(Object) 方法的声明:

public static bool Contains(Object)

参数

该方法接收一个 Object 类型的参数,表示要在集合中查找的元素。

返回值

该方法返回一个 bool 类型的值,表示集合中是否包含传入的元素。

示例

以下是基于字符串列表 List 的两个示例,分别使用 Contains(Object) 方法来判断集合中是否包含指定元素:

using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        // 示例 1:基本用法
        List<string> list = new List<string>{"猫", "狗", "鸟", "鱼"};
        Console.WriteLine(list.Contains("狗"));  // 输出 True
        Console.WriteLine(list.Contains("兔"));  // 输出 False

        // 示例 2:自定义类型
        List<Person> persons = new List<Person>
        {
            new Person {Name = "张三", Age = 18},
            new Person {Name = "李四", Age = 20},
            new Person {Name = "王五", Age = 22}
        };
        Person p = new Person {Name = "李四", Age = 20};
        Console.WriteLine(persons.Contains(p));  // 输出 True
    }
}

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

在示例1中我们使用字符串列表来演示 Contains(Object) 方法的基本用法。首先创建一个包含四个字符串的列表 list,然后使用 Contains(“狗”) 和 Contains(“兔”) 分别判断列表中是否包含 “狗” 和 “兔” 的元素。根据输出结果判断,当列表中包含传入的参数时,该方法返回 True,反之则返回 False。

在示例2中我们使用自定义的 Person 类型来演示 Contains(Object) 方法的用法。首先创建一个包含三个 Person 对象的列表 persons,然后创建一个新的 Person 对象 p,其 Name 和 Age 属性与列表中某个 Person 对象完全相同。最后使用 persons.Contains(p) 方法判断列表 persons 中是否包含 Person 对象 p。由于 Contains 方法使用 Equals 方法来比较对象是否相等,默认情况下是使用引用相等(对于非基元类型),因此需要在 Person 类型中重写 Equals 方法,同时也可以重写 GetHashCode 方法,实现自定义比较逻辑。

注意事项

Contains(Object) 方法默认使用 Equals 方法来比较对象是否相等。如果集合中包含自定义的复杂类型,需要在类型中重写 Equals 方法和 GetHashCode 方法才能进行准确比较。

另外,使用 Contains(Object) 方法判断集合中是否存在某个元素时,时间复杂度是 O(n),因为它需要遍历整个集合来查找元素。当集合中的元素数量很大时,该方法的效率会降低。如果需要频繁地进行包含判断,建议使用 HashSet 或字典类型,它们提供了更高效的查找方式。