当前位置: 首页 > news >正文

C# .NET Framework的特殊委托

C# .NET Framework的特殊委托

.NET Framework中定义了几种特殊的委托类型,以简化委托的使用。以下是一些常用的特殊委托类型:

Predicate<T>

这是一个返回布尔值的委托,接受一个类型为T的参数。常用于定义过滤条件。

using System;
using System.Collections.Generic;// 测试一个整数列表,找出所有大于10的整数。
class Program
{static void Main(){List<int> numbers = new List<int> { 1, 12, 3, 45, 6, 78 };Predicate<int> isGreaterThan10 = x => x > 10;foreach (var number in numbers.FindAll(isGreaterThan10)){Console.WriteLine(number);}}
}

Converter<TInput, TResult>

接受一个类型为TInput的参数,并返回一个类型为TResult的对象。用于类型转换。

using System;// 将字符串数组转换为整数数组。
class Program
{static void Main(){string[] strings = { "1", "2", "3" };Converter<string, int> stringToInt = s => int.Parse(s);int[] integers = Array.ConvertAll(strings, stringToInt);Console.WriteLine(string.Join(", ", integers));}
}

Comparison<T>

接受两个类型为T的参数,并返回一个整数,表示它们的相对顺序。常用于排序操作。

using System;class Program
{static void Main(){int[] numbers = { 3, 1, 4, 1, 5 };Comparison<int> comparer = (x, y) => x.CompareTo(y);Array.Sort(numbers, comparer);Console.WriteLine(string.Join(", ", numbers));}
}

Action

一个无返回值的委托,可以接受从0到16个参数。Action是其泛型形式。

using System;// 定义一个无参数无返回值的委托,用于打印消息。
class Program
{static void PrintMessage(){Console.WriteLine("Hello, World!");}static void Main(){Action printAction = PrintMessage;printAction();}
}

Func<TResult>

一个有返回值的委托,返回类型为TResult,无参数。Func<T1, T2, …, TResult>是其泛型形式,可以接受从1到16个参数。

using System;// 定义一个返回布尔值的委托,检查一个数字是否为偶数。
class Program
{static void Main(){Func<int, bool> isEven = number => number % 2 == 0;Console.WriteLine(isEven(10)); // 输出 TrueConsole.WriteLine(isEven(7));  // 输出 False}
}

EventHandler

专门用于事件处理的标准委托类型,接受一个Object类型的sender和EventArgs或其派生类型e作为参数。

using System;// 使用 EventHandler 来定义一个事件处理程序,响应按钮点击事件。
class Program
{public event EventHandler ButtonClicked;protected virtual void OnButtonClicked(EventArgs e){ButtonClicked?.Invoke(this, e);}public void SimulateButtonClick(){OnButtonClicked(EventArgs.Empty);}
}class Test
{static void Main(string[] args){Program p = new Program();p.ButtonClicked += (sender, e) =>{Console.WriteLine("Button was clicked.");};p.SimulateButtonClick();}
}

相关文章:

C# .NET Framework的特殊委托

C# .NET Framework的特殊委托 .NET Framework中定义了几种特殊的委托类型&#xff0c;以简化委托的使用。以下是一些常用的特殊委托类型&#xff1a; Predicate<T> 这是一个返回布尔值的委托&#xff0c;接受一个类型为T的参数。常用于定义过滤条件。 using System; …...

C# 判断电脑是否联网

项目中连接webAPI需要判断是否联网&#xff0c;故找到这个方法&#xff0c;不需要引用任何dll&#xff0c;代码复制一下&#xff0c;直接使用。wininet.dll是系统自带的 public void Initial(){try{ if (IsNetworkConnected){SvMaster.Log.WriteInfo("网络…...

爬虫解析代码结构

在设计中加入一个顶层接口是有益的&#xff0c;特别是当您希望实现统一的接口来处理所有类型的排行榜数据时。这样做可以提供更好的灵活性和扩展性&#xff0c;同时保持代码的整洁和易于维护。 设计概述 接口: 定义一个 RankingDataCollector 接口&#xff0c;它定义了所有数…...

day 23 进程间通信—管道

注意事项&#xff1a; 1、如果管道中至少有一个写端&#xff1a; 如果管道中有数据,直接读出 如果管道中没有数据&#xff0c;会阻塞等待直到有数据写入后读出 2、如果管道中没有写端&#xff1a; 如果管道中有数据&#xff0c;直接…...

Python酷库之旅-第三方库Pandas(073)

目录 一、用法精讲 296、pandas.Series.dt.as_unit方法 296-1、语法 296-2、参数 296-3、功能 296-4、返回值 296-5、说明 296-6、用法 296-6-1、数据准备 296-6-2、代码示例 296-6-3、结果输出 297、pandas.Series.dt.days属性 297-1、语法 297-2、参数 297-3、…...

使用easyexcel导出,发生了Exception: could not find acceptable repesentation

报错信息&#xff1a; 原因以及解决方案&#xff1a; 原因是我的代码使用Resp响应返回实体&#xff0c;其实使用EasyExcel导出已经设置了响应编码&#xff0c;导致重复了。 当你通过 HttpServletResponse 的输出流写入文件时&#xff0c;你已经直接控制了响应体。如果此时还尝…...

android display 笔记(五)HWC(Hardware Composer)

HWC 简单来说HWC是用来合成图形和显示图形的&#xff0c;可以把多个图形缓存传给硬件混合渲染器&#xff0c;让硬件混合渲染器执行合成操作&#xff0c;显示图形就是直接将图形缓存显示到屏幕。 android 14 /hardware/interfaces/graphics/composer/2.1/IComposer.hal 19 im…...

【模电笔记】——集成运算放大电路

tips&#xff1a;本章节的笔记已经打包到word文档里啦&#xff0c;建议大家下载文章顶部资源&#xff08;有时看不到是在审核中&#xff0c;等等就能下载了。手机端下载后里面的插图可能会乱&#xff0c;建议电脑下载&#xff0c;兼容性更好且易于观看&#xff09;&#xff0c;…...

Android Studio Gradle多渠道打包

原理使用Android Studio打一次渠道包&#xff0c;用反编译工具反编译后&#xff0c;修改渠道信息重新编译 准备文件 分渠道配置文件&#xff1a;channel.txt ↓ # 多渠道配置里“统计平台”、“市场名称”、“渠道编号”分别代表什么意思&#xff1f; # 统计平台&#xff1a;…...

什么是DNS缓存?DNS缓存有哪些作用和危害?

在互联网世界的运转机制中&#xff0c;DNS&#xff08;域名系统&#xff09;是其中的关键&#xff0c;而DNS缓存则是这一系统的重要环节。它既能加快网站的访问速度&#xff0c;同时也会对网络安全造成影响&#xff0c;因此了解DNS缓存对于网站的日常管理至关重要。 什么是DNS…...

web基础与http协议与配置

目录 一、web基础 1.1 DNS与域名&#xff08;详解看前面章节&#xff09; 1.2 网页的概念&#xff08;HTTP/HTTPS&#xff09; 1.2.1 基本概念 1.2.2 HTML文档结构(了解) 1.2.3 web相关重点 1.2.4 静态资源和动态资源 二、http协议 2.1 概述 2.2 cookie和session&…...

机械学习—零基础学习日志(python编程2)

零基础为了学人工智能&#xff0c;正在艰苦的学习 这里把&#xff0c;函数以及类相关的知识做一个笔记&#xff0c;放在这里。 期待与大家交流~ 变量作用域 Python 中&#xff0c;程序的变量并不是在哪个位置都可以访问的&#xff0c;访问权限决定于这个变量是在哪里赋值的…...

element-plus的表单输入框有清除按钮的,文字输入前后宽度不一致怎么解决

输入内容之后多了一个可清除的图标&#xff0c;输入框的宽度也被撑开了 根据输入前后的dom对比发现&#xff0c;多了一个图标的span标签 :deep(.el-input__wrapper) {position: relative;.el-input__inner {padding-right: 18px;}.el-input__suffix {position: absolute;right:…...

解决Docker拉取镜像时 i/o timeout错误

目录 一&#xff0c;设置Docker镜像源&#xff08;推荐&#xff09; 1.1 解决方案1&#xff1a;配置加速地址 1.2 解决方案2&#xff1a;使用代理拉取镜像 1.3 解决方案3&#xff1a;备用办法&#xff1a;直接传送镜像 二&#xff0c;目前可用的镜像源 一&#xff0c;设置…...

面壁的智能开源 MiniCPM-V 2.6 边缘人工智能多模态功能与 GPT-4V 不相上下

"MiniCPM-V2.6 "是一个边缘多模态人工智能模型&#xff0c;仅拥有 80 亿个参数&#xff0c;却在单图像、多图像和视频理解任务中取得了低于 200 亿个参数的三项 SOTA&#xff08;艺术境界&#xff09;成绩&#xff0c;显著增强了边缘多模态能力&#xff0c;并与 GPT-…...

dhcp+checkkickstar的实验理解

文章目录 实验介绍使用的服务介绍PXE服务dhcp服务Kickstart 服务tftp服务 第一部分&#xff08;基础部分&#xff09;代码展示注意点第一点![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/13c0f4aabb664655a4dd285dd8e5527a.png)第二点 结果展示 第二部分&#xff08…...

Android网络安全:如何防止中间人攻击

文章目录 引言一、中间人攻击概述二、预防中间人攻击的方法2.1 使用HTTPS2.2 证书锁定&#xff08;Certificate Pinning&#xff09;2.3 使用SSL/TLS最佳实践2.4 验证主机名 三、总结 引言 中间人攻击&#xff08;Man-in-the-Middle&#xff0c;简称MITM&#xff09;是一种常见…...

NOI Linux 2.0 的安装说明以及使用指南

关于 NOI Linux 2.0 NOI Linux 是 NOI 竞赛委员会基于 Ubuntu 操作系统开发的一款 Linux 桌面发行版&#xff0c;是一套免费的、专门为信息学奥林匹克竞赛选手设计的操作系统&#xff0c;是 NOI 系列赛事指定操作系统&#xff0c;适用于常见笔记本电脑和桌面电脑。 新建虚拟机…...

07、MySQL-多表查询

目录 1、内连接 1.1 隐式内连接 1.2 显式内连接 2、外连接 2.1 左外连接 2.2 右外连接 3、自连接 4、联合查询 5、子查询 5.1 标量子查询 5.2 列子查询 5.3 行子查询 5.4 表子查询 1、内连接 概念&#xff1a;相当于查询A、B表交集的部分数据 1.1 隐式内连接 语法&…...

20240809 每日AI必读资讯

乒乓球AI机器人赢了人类&#xff01;正反手灵活转换&#xff0c;擦网球高球都能接 - 谷歌发布首个达到人类竞技水平的机器人Agent&#xff0c;挑战乒乓球赛场。 - 机器人通过学习大量乒乓球状态数据&#xff0c;掌握了正手上旋球、反手瞄准等技能&#xff0c;展现出高速运动…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...