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

C# 委托、事件、特性程序

====================================================

委托和事件

====================================================

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        Man man = new Man("小明");

        Roommate[] roommates = {
            new Roommate("小张"),
            new Roommate("小朱"),
            new Roommate("小李"),
        };

        man.action += roommates[0].TakeFood;
        man.action += roommates[1].TakePakage;
        man.action += roommates[2].TakePakage;
        man.action += roommates[2].TakeFood;

        man.Down();
    }
}

public class Man

    public string Name { get; private set; }

    public event Action action = null;

    public Man(string name)
    {
        Name = name;
    }

    public void Down()
    {
        MessageBox.Show(Name + "下楼了");
        if (action != null) 
        { 
            action();
        }
    }
}

public class Roommate

    public string Name { get; private set; }

    public Roommate(string name)
    {
        Name = name;
    }

    public void TakePakage()
    {
        MessageBox.Show(Name + "取包裹。");
    }

    public void TakeFood() 
    {
        MessageBox.Show(Name + "取食物。");
    }
}

====================================================

特性

====================================================

[AttributeUsage(AttributeTargets.Class)]
public sealed class InformationAttribute : Attribute
{
    public string developer;
    public string version;
    public string description;

    public InformationAttribute(string developer, string version, string description)
    {
        this.developer = developer;
        this.version = version;
        this.description = description;
    }
}

[Information("张三","v1.0","测试类1")]
public class TestClass1

    
}

====================================================

泛型委托

====================================================

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        Employee[] employees = {
            new Employee("a",600),
            new Employee("b",100),
            new Employee("c",300),
            new Employee("d",800),
            new Employee("e",200),
        };

        Sort<Employee>(employees, Employee.Compare);

        string str="";
        foreach (Employee emp in employees) 
        { 
            str = str + emp.Name+ "--" + emp.Salary +"\n";
        }
        MessageBox.Show(str);
    }

    public static void Sort<T>(T[] data, Func<T, T, bool> compare)
    {
        bool falg = true;
        do 
        {
            falg = false;
            for (int i = 0; i < data.Length-1; i++)
            {
                if (compare(data[i], data[i + 1]))
                {
                    T temp = data[i];
                    data[i] = data[i + 1];
                    data[i + 1] = temp;
                    falg = true;
                }
            }
        } while (falg);
    }
}

public class Employee

    public string Name { get; set; }
    public double Salary { get; set; }

    public Employee(string name, double salary)
    {
        Name = name;
        Salary = salary;
    }

    public static bool Compare(Employee e1, Employee e2)
    {
        return e1.Salary > e2.Salary;
    }
}

相关文章:

C# 委托、事件、特性程序

委托和事件 public partial class Form1 : Form { public Form1() { InitializeComponent(); Man man new Man("小明"); Roommate[] roommates { new Roommate("小张"), new Roommate("小朱"), …...

MapTR论文笔记

MAPTR: STRUCTURED MODELING AND LEARNING FOR ONLINE VECTORIZED HD MAP CONSTRUCTION 目的 传统高精地图 通过一些离线的基于 SLAM 的方法生成&#xff0c;需要复杂的流程以及高昂的维护费用。基于 bev 分割的建图方法&#xff0c;缺少向量化 实例级的信息&#xff0c;比如…...

JS进阶-Day4

&#x1f954;&#xff1a;流水不争先争滔滔不绝 JS进阶-Day1——点击此处&#xff08;作用域、函数、解构赋值等&#xff09; JS进阶-Day2——点击此处&#xff08;深入对象之构造函数、实例成员、静态成员等&#xff1b;内置构造函数之引用类型、包装类型等&#xff09; JS进…...

【C语言】初阶完结练习题

&#x1f388;个人主页&#xff1a;库库的里昂 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 ✨收录专栏&#xff1a;C语言初阶 ✨其他专栏&#xff1a;代码小游戏 &#x1f91d;希望作者的文章能对你有所帮助&#xff0c;有不足的地方请在评论…...

c++类与对象详解

c类与对象详解 对象类方法自定义类型类的特性this类的六个默认成员函数static成员友元内部类 对象 在C中&#xff0c;对象是类的实例。定义对象的语法为&#xff1a; <class_name> object_name;其中&#xff0c;class_name 是定义类时指定的类名&#xff0c;object_nam…...

I/O 函数/缓存和字节流、占位符、getchar(),putchar()

I/O 函数 C 语言提供了一些函数&#xff0c;用于与外部设备通信&#xff0c;称为输入输出函数&#xff0c;简称 I/O 函数。输入&#xff08;import&#xff09;指的是获取外部数据&#xff0c;输出&#xff08;export&#xff09;指的是向外部传递数据。 缓存和字节流 严格地…...

MySQL日期常见的函数

-- 获取当天日期 -- 2023-06-20 select curdate();-- 获取当天年月日时分秒 select now();-- 日期运算 -- 2024-06-20 17:04:17 select date_add(now(),interval 1 year);-- 日期比较 -- 0 select datediff(now(),now());-- 日期MySQL对于日期类型数据如何查询 -- 获取指定日期…...

Python获取CPU温度

本文的主要目的是演示如何借助 Python 中的 pythonnet 库读取和显示 CPU 温度。 Python获取CPU温度 根据您正在设计的应用程序类型&#xff0c;您可能希望监视运行该程序的机器的资源。 由于多种原因&#xff0c;可能会出现这种情况。 也许您需要您的程序在系统资源达到特定阈…...

后端整理(MySql)

1 事务 1.1 事务ACID原则 原子性&#xff08;Atomicity&#xff09; 事务的原子性指的是事务的操作&#xff0c;要么全部成功&#xff0c;要么全部失败回滚 一致性&#xff08;Consistency&#xff09; 事务的一致性是指事务必须使数据库从一个一致状态转变成另一个一致性…...

HashSet的详细介绍

一、HashSet整体介绍 HashSet 是 Java 中的一个集合类&#xff0c;它实现了 Set 接口&#xff0c;用于存储不重复的元素。它是基于哈希表的数据结构实现的。 HashSet 的特点如下&#xff1a; 不允许存储重复的元素&#xff1a;HashSet 中的元素是唯一的&#xff0c;如果尝试…...

【SCI征稿】JCR1区,中科院2区,有关大数据、人工智能、机器学习的应用研究均可

期刊简介&#xff1a; 【出版社】Elsevier 【影响因子】IF&#xff08;2022&#xff09;&#xff1a;6.5-7.0 【期刊分区】JCR1区&#xff0c;中科院2区 【检索情况】SCIE 在检&#xff0c;正刊 【参考周期】期刊部系统内提交&#xff0c;预计3-5个月左右录用&#xff0c;…...

【UE】AI导航,多个导航物体无法走到同一终点问题

如不需要开启导航物体的碰撞&#xff0c;则需要关闭Use RVOAvoidance 不然会导致多个导航物体无法到达同一个目标点&#xff0c;都在附近晃。无法结束寻路。 ue小白&#xff0c;判定导航终点的半径&#xff0c;没有找到。如果有大佬知道怎么设置请在评论区指出&#xff0c;谢…...

途游游戏 x 极狐GitLab “通关” DevOps :单元测试从无到优,覆盖率 0→80%

目录 4 个工具孤岛 → 极狐GitLab 全家桶&#xff0c; 被动的「人找进度」 → 高效的「进度找人」 把 Code Review 做扎实 代码质量「向左移」&#xff0c;修复成本「往下降」 从无到「优」 自动执行单元测试&#xff0c;覆盖率 0→80% 你喜欢玩游戏吗&#xff1f; 最近…...

【云原生】Docker-Compose全方面学习

目录 1.compose简介 Compose V2 2.compose安装与下载 二进制包 PIP 安装 bash 补全命令 卸载 3.docker compose管理命令 命令对象与格式 命令选项 命令使用说明 1.compose简介 Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose&#xff0c;您可…...

基于 Redux + TypeScript 实现强类型检查和对 Json 的数据清理

基于 Redux TypeScript 实现强类型检查和对 Json 的数据清理 突然像是打通了任督二脉一样就用了 generics 搞定了之前一直用 any 实现的类型…… 关于 Redux 的部分&#xff0c;这里不多赘述&#xff0c;基本的实现都在这里&#xff1a;Redux Toolkit 调用 API 的四种方式 和…...

HIVE语法优化之Join优化

桶用两表关联字段,MapJoin时需要将小表填入内存,这时候,分桶就起到了作用 一个stage阶段代表一个mr执行,好几个MR,会吧每一个MR的结果都压缩 Mysql 慢查询 如果sql语句执行超过指定时间,定义该sql为慢查询,存储日志, 查问题: SQL日志,模拟慢SQL 然后查询执行计划 分组聚合 就…...

如何申请境内金融信息服务报备

依据《金融信息服务管理规定》等要求&#xff0c;开展境内金融信息服务报备工作事项如下&#xff1a; 一、报备对象及要求 金融信息服务&#xff0c;是指向从事金融分析、金融交易、金融决策或者其他金融活动的用户提供可能影响金融市场的信息和&#xff08;或者&#xff09;…...

VS code:Task

Task 微软官方连接&#xff1a; https://code.visualstudio.com/docs/editor/tasks what is Task 我们知道&#xff0c;vscode可以支持许多编程语言&#xff0c;很多语言是需要进行编译的&#xff0c;打包&#xff0c;测试… 有许多已有的工具支持这些流程&#xff0c;例如A…...

《Java-SE-第三十章》之哲学家就餐问题

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页&#xff1a;KC老衲爱尼姑的博客主页 博主的github&#xff0c;平常所写代码皆在于此 共勉&#xff1a;talk is cheap, show me the code 作者是爪哇岛的新手&#xff0c;水平很有限&…...

关于接口测试用例设计的一些思考

接口测试发现的典型问题 传入参数处理不当&#xff0c;引起程序错误类型溢出&#xff0c;导致数据读取和写入不一致对象权限校验出错&#xff0c;可获取其他角色信息状态出错&#xff0c;导致逻辑处理出现问题逻辑校验不完善定时任务执行出错 接口测试用例设计 接口测试用例…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…...