C# Contains(T):确定 ICollection是否包含特定值

yizhihongxing

C# Contains(T)方法的完整攻略

简介

Contains(T)是C#的泛型方法,用于判断某个集合是否包含某个指定元素。方法返回值为bool类型,如果集合中包含该元素,则返回true,否则返回false。

方法签名

public static bool Contains<TSource>(this IEnumerable<TSource> source, TSource value);

参数说明

  • source: 需要搜索的IEnumerable集合。
  • value: 要搜索的元素。

示例说明

示例1

下面的示例演示了如何使用Contains(T)方法:

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        // 创建一个字符串列表
        List<string> names = new List<string> { "John", "Jane", "Bob", "Alice" };

        // 搜索元素
        bool result1 = names.Contains("John"); // true
        bool result2 = names.Contains("Peter"); // false

        // 显示结果
        Console.WriteLine(result1); // True
        Console.WriteLine(result2); // False
    }
}

在以上示例中,我们创建了一个字符串列表,包含4个元素。然后我们使用Contains(T)方法搜索了两个元素:“John”和“Peter”并将结果存储在result1和result2变量中,最后打印出结果。

示例2

下面的示例演示了如何使用Contains(T)方法在自定义类中搜索元素:

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        // 创建一个Person类对象列表
        List<Person> people = new List<Person> {
            new Person { Name = "John", Age = 30 },
            new Person { Name = "Jane", Age = 25 },
            new Person { Name = "Bob", Age = 40 },
            new Person { Name = "Alice", Age = 35 }
        };

        // 实例化一个Person对象
        Person p = new Person { Name = "John", Age = 30 };

        // 搜索元素
        bool result1 = people.Contains(p, new PersonEqualityComparer()); // true
        bool result2 = people.Contains(new Person { Name = "John", Age = 20 }, new PersonEqualityComparer()); // false

        // 显示结果
        Console.WriteLine(result1); // True
        Console.WriteLine(result2); // False
    }
}

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

class PersonEqualityComparer : IEqualityComparer<Person>
{
    public bool Equals(Person x, Person y)
    {
        return x.Name == y.Name && x.Age == y.Age;
    }

    public int GetHashCode(Person obj)
    {
        return (obj.Name + obj.Age).GetHashCode();
    }
}

在以上示例中,我们创建了一个Person类对象列表。然后我们实例化了一个Person对象p,并使用Contains(T)方法搜索了两个元素:“p”和“new Person { Name = "John", Age = 20 }”并将结果存储在result1和result2变量中,最后打印出结果。值得注意的是,为了使Contains(T)方法正确工作,我们需要提供一个实现IEqualityComparer接口的自定义比较器类(PersonEqualityComparer)以确保正确比较两个Person对象。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# Contains(T):确定 ICollection是否包含特定值 - Python技术站

(0)
上一篇 2023年4月19日
下一篇 2023年4月19日

相关文章

  • C# 设计模式系列教程-策略模式

    首先我们来介绍一下“C# 设计模式系列教程-策略模式”的概念。 策略模式 策略模式是一种行为型设计模式,它允许在运行时选择算法的行为。通过定义多个算法类实现同一个接口,并且可以随时切换算法,使得客户端程序能够根据不同的情况选择不同的算法。 策略模式的角色 策略模式涉及到三个角色: 上下文(Context):拥有多个算法类对象,维护一个对于策略对象的引用,可以…

    C# 2023年6月6日
    00
  • asp.net错误处理Application_Error事件示例

    ASP.NET应用程序中的Application_Error事件是用于处理未处理异常的应用程序级别错误的事件。这个事件允许我们将应用程序的控制流引导到自定义错误处理逻辑。下面是完整的“asp.net错误处理Application_Error事件示例”的攻略。 1. 创建Global.asax文件 首先,需要在应用程序的根目录下创建一个名为“Global.as…

    C# 2023年6月6日
    00
  • c#中Winform实现多线程异步更新UI(进度及状态信息)

    C#中的Winform实现多线程异步更新UI(进度及状态信息)需要遵循以下步骤: 使用BackgroundWorker控件创建异步线程 在异步线程完成工作时,使用ReportProgress方法传递进度信息 在主线程中处理进度信息并更新UI 在异步线程完成工作后,使用RunWorkerCompleted事件处理线程完成状态 下面解释一下每个步骤: 1. 使用…

    C# 2023年6月6日
    00
  • C#使用Word中的内置对话框实例

    下面是详细的攻略: 使用Word中的内置对话框实例 在C#中,我们可以通过调用Word的内置对话框来实现相关功能。具体步骤如下: 引入Word对象库和对话框对象库 首先我们需要在项目中引入Word对象库和对话框对象库。 using Microsoft.Office.Interop.Word; using Microsoft.Office.Core; 创建Wo…

    C# 2023年6月3日
    00
  • C#中API调用的多种方法

    当我们需要在C#中使用外部库或者是系统提供的API时,可以通过以下多种方式进行API调用: 1. DllImport方式调用API 步骤 首先需要在命名空间中添加using System.Runtime.InteropServices,该命名空间为DllImport方法所在的命名空间。 在需要使用API的方法上方添加DllImport特性,该特性包含了API…

    C# 2023年5月15日
    00
  • 详解C# Protobuf如何做到0分配内存的序列化

    C# protobuf是Google开发的一种高效的序列化格式。相较于其他序列化方式(比如XML或Json),它所占用的空间更少,同时速度更快,因为它是二进制序列化格式。在进行序列化过程中,内存的分配是一个非常重要的问题,因为大量的内存分配会导致性能下降甚至内存溢出。本文将详细介绍C# protobuf如何实现0分配内存的序列化。 一、使用“MemorySt…

    C# 2023年5月31日
    00
  • C#导出pdf的实现方法(浏览器不预览直接下载)

    下面我将分享如何使用C#实现将数据导出为pdf并进行下载,跳过浏览器预览的过程。 1. 安装NuGet依赖 我们需要安装以下NuGet包: iTextSharp:用于创建PDF文件和表单以及PDF文档的操作 在Visual Studio中,可以通过NuGet包管理器来安装这些依赖。 2. 编写C#代码 接下来,我们需要编写C#代码来实现导出和下载功能。 首先…

    C# 2023年6月8日
    00
  • C# WPF 建立无边框(标题栏)的登录窗口的示例

    下面是C#WPF建立无边框(标题栏)的登录窗口的完整攻略,包含两条示例。 1. 在XAML中设置窗口样式 我们可以在XAML文件中设置窗口的样式。首先,我们需要设置窗口的ResizeMode属性为NoResize,这将禁用窗口的缩放功能。接着,我们可以设置窗口Chrome样式为None,这将清除窗口的默认边框,而且我们需要手动添加窗口的标题栏和关闭按钮。 &…

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部