习题20240807
文章目录
- 题目 1: 泛型类
- 题目 2: 泛型方法
- 题目 3: 泛型接口
- 题目 4: 泛型约束
- 题目 5: 泛型集合
- 题目6:
- 题目7:
- 题目8:
- 题目9:
题目 1: 泛型类
编写一个泛型类 Box,它能够存储一个类型为 T 的值,并提供方法 SetItem 和 GetItem 来设置和获取该值并给出使用示例。
public class Program{public class Box<T> {private T _item;public void SetItem(T item){_item= item;}public T GetItem(){return _item;}}static void Main(string[] args){Box<int> intbox = new Box<int>();intbox.SetItem(123);Console.WriteLine(intbox.GetItem());Box<string> stringbox = new Box<string>();stringbox.SetItem("Hello");Console.WriteLine(stringbox.GetItem());}}
题目 2: 泛型方法
编写一个泛型方法 Swap,它接受一个数组和两个索引,交换数组中这两个位置的元素,并给出使用示例。
public static void Swap<T>(T[] array,int index1,int index2){T temp = array[index1];array[index1] = array[index2];array[index2] = temp;}static void Main(string[] args){int[] numbers = { 1, 2, 3, 4, 5, 6 };foreach(var number in numbers){Console.Write(number);}Swap(numbers, 0, 5);Console.WriteLine();foreach(var number in numbers){Console.Write(number);}}
题目 3: 泛型接口
定义一个泛型接口 IRepository,它包含两个方法:Add 和 Get。Add 方法用于添加类型 T 的对象,Get 方法用于获取类型 T 的对象,并给出使用示例。
public class Program{public interface IRepository<T>{public void Add(T value);public T Get();}public class SampleClass:IRepository<int>{private int t;public void Add(int value){t=value;}public int Get(){return t;}}static void Main(string[] args){IRepository<int> repository = new SampleClass();repository.Add(1);Console.WriteLine(repository.Get());}}
题目 4: 泛型约束
编写一个泛型方法 PrintTypeName,它接受一个泛型参数 T 并打印 T 的类型名称。要求使用泛型约束来确保 T 是一个引用类型,并给出使用示例。
public class Person{public int Age { get; set; }public string Name { get; set; }}public class Program{public static void PrintTypeName<T>(T t)where T : class{Console.WriteLine($"Type Name:{typeof(T).Name}");}static void Main(string[] args){PrintTypeName("Hello,world");PrintTypeName(new Person());}}
题目 5: 泛型集合
创建一个泛型列表 MyList,它支持添加和移除元素,并且可以遍历列表中的元素,并给出使用示例。
public class Program{public class MyList<T>{public List<T> list=new List<T>();public void Add(T item){list.Add(item);}public void RemoveAt(int item){list.RemoveAt(item);}public void Foreach(){foreach(var item in list){Console.WriteLine(item);}}}static void Main(string[] args){MyList<int>mylist=new MyList<int>();mylist.Add(1);mylist.Add(2);mylist.Add(3);mylist.Foreach();mylist.RemoveAt(0);mylist.Foreach();}}
题目6:
编写一个拓展方法 Filter,扩展 IEnumerable,接收一个 Func<T, bool> 作为参数,并返回一个仅包含符合条件的元素的集合。要求实现一个简单的筛选功能,比如筛选出集合中的所有偶数。
public static class IEnumerableExtensions{public static IEnumerable<T> Filter<T>(this IEnumerable<T> source, Func<T, bool> predicate){foreach(T item in source){if (predicate(item)){yield return item;}}}}class Program{static void Main(string[] args){IEnumerable<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6 };IEnumerable<int> evenNumbers = numbers.Filter(n => n % 2 == 0);foreach(int n in evenNumbers){Console.WriteLine(n);}}}
题目7:
创建一个包含事件 OnValueChanged 的类 Notifier。定义一个委托 ValueChangedHandler,用于处理 OnValueChanged 事件。然后在主程序中,创建 Notifier 实例并订阅事件,当事件被触发时打印一条消息。
{public delegate void ValueChanedHandler(Object sender,EventArgs args);public class Notifier{public event ValueChanedHandler OnValueChaned;protected virtual void OnValueChangedEvent(){OnValueChaned?.Invoke(this, EventArgs.Empty);}public void TriggerValueChaned(){OnValueChangedEvent();}}class Program{static void Main(string[] args){Notifier notifier= new Notifier();notifier.OnValueChaned += Notifier_OnValueChanged;notifier.TriggerValueChaned();Console.ReadKey();}private static void Notifier_OnValueChanged(object sender, EventArgs args){Console.WriteLine("Value changed event triggered.");}}}
题目8:
定义一个委托 Printer,可以处理输出字符串的方法。创建两个方法 PrintUpperCase 和 PrintLowerCase,分别将字符串转换为大写和小写。然后,创建一个多播委托,先调用 PrintUpperCase,再调用 PrintLowerCase。
public delegate void Printer(string message);class Program{public static void PrintUpperCase(string message){Console.WriteLine(message.ToUpper());}public static void PrintLowerCase(string message){Console.WriteLine(message.ToLower());}static void Main(string[] args){Printer printUpperCaseDelegate = PrintUpperCase;Printer printLowerCaseDelegate= PrintLowerCase;Printer multiCaseDelegate = printUpperCaseDelegate + printLowerCaseDelegate;multiCaseDelegate("Hello World!");}}
题目9:
编写一个方法 PerformOperation,接受一个 Func<int, int, int> 类型的委托作为参数,该委托执行两个整数的操作。调用 PerformOperation 方法并传入一个委托,用于计算两个整数的差值。
class Program{static void Main(string[] args){PerformOperation((x, y) => x - y, 10, 5);}static void PerformOperation(Func<int,int,int> operation,int num1,int num2){int result= operation(num1,num2);Console.WriteLine(result);}}
相关文章:
习题20240807
文章目录 题目 1: 泛型类题目 2: 泛型方法题目 3: 泛型接口题目 4: 泛型约束题目 5: 泛型集合题目6:题目7:题目8:题目9: 题目 1: 泛型类 编写一个泛型类 Box,它能够存储一个类型为 T 的值,并提供方法 SetI…...
src挖掘-记一次有趣的逻辑漏洞分享
漏洞挖掘-记一次有趣的逻辑漏洞挖掘 前言简述1、信息收集2、找功能点3、挖掘漏洞案例一:任意用户注册漏洞案例二-垂直越权导致管理员密码重置获得管理员后台权限漏洞总结 前言 此文章是小白的学习笔记,请不要利用文章内相关知识点进行非法渗透ÿ…...
【C++】STL | list (链表)详解及重要函数的实现
目录 前言 总代码 ListNode类框架的建立 (成员与模板) list类的框架 普通构造 与 empty_init(适合不同类型构造函数的小函数) list的迭代器 引子 operator、operator--(前置与后置) operator 与 operator! operator* 与 …...
警惕智能手机的“隐形眼”:如何保护我们的数字隐私堡垒
随着智能手机深入我们生活的方方面面,它变得无所不在,甚至无所不知。 但你是否意识到,你的手机可能正在悄无声息地“监听”你的一举一动? 从你的搜索习惯到日常对话,手机的个性化推荐系统正不断收集你的数据。 本文…...
人工智能算法工程师(高级)课程12-自然语言处理之NLP的语言模型-ELMo,transformer,BERT与代码详解
大家好,我是微学AI,今天给大家介绍一下人工智能算法工程师(高级)课程12-自然语言处理之NLP的语言模型-ELMo,transformer,BERT与代码详解。本课程面向高级人工智能算法工程师,深入讲解自然语言处理(NLP)中的关键语言模型技术,包括了EMLo和transformer架构。此外,课程还详细…...
PicGo + gitee 免费搭建个人图床
目录 1 图床概念2 使用gitee和PicGo搭建图床流程2.1 下载安装PicGo工具 3 图片上传错误处理3.1 PicGo客户端提示404错误信息图片上传失败3.2 PicGo客户端提示400错误信息图片上传失败 1 图床概念 "图床"是一个网络术语,它指的是一种用于存储和托管图片…...
组合数的低复杂度运算
题源 题目 F. 预期中位数 每次测试的时间限制:3 秒 每次测试的内存限制:256 兆字节 Arul 有一个长度为 n 的二进制数组* a。 他将取该数组中所有长度为 k(k 为奇数)的子序列并找到它们的中位数。 所有这些值的总和是多少…...
小型并网式光伏气象站:光伏电站的智能守护者
小型并网式光伏气象站以其独特的功能和优势,成为了电站高效运行的智能守护者。小型并网式光伏气象站通过精准的数据采集与分析,为光伏电站的运维管理提供了强有力的支持。 小型并网式光伏气象站能够实时监测并记录光伏电站周围环境的多种气象参数&#x…...
JavaScript 中的回调函数(callback)
JavaScript 中的回调函数(callback) JavaScript 中的回调函数(callback)是一个传递给另一个函数作为参数的函数,并且这个传递的函数可以在其他函数内部被调用执行。回调函数是异步编程的一个核心概念,特别…...
计算机毕业设计hadoop+spark+hive漫画推荐系统 动漫视频推荐系统 漫画分析可视化大屏 漫画爬虫 漫画推荐系统 漫画爬虫 知识图谱 大数据
HadoopSparkHive漫画推荐系统详细开题报告 一、引言 随着互联网技术的飞速发展,动漫和漫画产业的数据量急剧增长。用户面临着海量漫画作品的选择难题,如何从这些数据中高效地提取有价值的信息,为用户推荐符合其喜好的漫画作品,成…...
解决pycharm日志总是弹出“无法运行Git,未安装Git”的问题
需求分析 我电脑中安装了git,但是打开pycharm,右下角总是弹出 无法运行Git,未安装Git的日志。 解决方法 首先打开pycharm,按照以下路径,依次点击。 file -----settings-----version control -----Git----Git path(选择自己下载…...
threejs 节点材质系统 绑定attribute
新的 节点材质系统 绑定属性及使用 非常方便 不必重复声明 以instances为例 import {instancedBufferAttribute,instancedDynamicBufferAttribute,} from "three/tsl";声明一个 InstancedBufferAttribute 使用 instancedBufferAttribute包装后就可以在shader中直接使…...
Rabbitmq的几种工作模式
工具类 public class RabbitMQConnection {public static Connection getConnection() throws Exception{//1.创建connectionFactoryConnectionFactory connectionFactory new ConnectionFactory();//2.配置HostconnectionFactory.setHost("127.0.0.1");//3.设置Po…...
如何在 Debian 上安装运行极狐GitLab Runner?【二】
极狐GitLab 是 GitLab 在中国的发行版,专门面向中国程序员和企业提供企业级一体化 DevOps 平台,用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规,而且所有的操作都是在一个平台上进行,省事省心省钱。可以一键安装极狐GitL…...
简单的docker学习 第13章 CI/CD与Jenkins(下)
第13章 CI/CD 与 Jenkins 13.13 自由风格的 CI 操作(最终架构) 前面的架构存在的问题是,若有多个目标服务器都需要使用该镜像,那么每个目标服务器都需要在本地构建镜像,形成系统资源浪费。若能够在 Jenkins 中将镜像相撞构建好并推送到 Har…...
基于STM32设计的智能鱼缸_带鱼儿数量视觉识别(华为云IOT)(202)
文章目录 一、前言1.1 项目介绍【1】项目功能介绍【2】设计实现的功能【3】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】ESP8266工作模式配置【3】自动换水原理1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献1.4 开发工具的选择【1】设备端开发【2】上位…...
立体连接模式下的传播与沟通:AI智能名片小程序的创新应用与深度剖析
摘要:在数字化浪潮的推动下,信息传播与沟通方式正经历着前所未有的变革。立体连接模式,作为这一变革的重要产物,通过整合物理空间、虚拟网络空间与社群心理空间的三维联动,实现了信息的深度传播与高效互动。AI智能名片…...
基于Python的Scrapy爬虫的个性化书籍推荐系统【Django框架、超详细系统设计原型】
文章目录 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主项目介绍系统分析系统设计展示总结 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主 项目介绍 近年来,随着互联网的蓬勃发展,企事业单…...
二叉树bst
二叉搜索树的中序遍历结果有序 ,二叉搜索树性质,左小右大,二叉搜索树中序遍历的结果应该是从小到大的。 题目描述二叉树是从上到下,从左到右描述,并非前中后序中的一种。 99. 恢复二叉搜索树 class Solution:first …...
elasticsearch的使用(二)
DSL查询 Elasticsearch的查询可以分为两大类: 叶子查询(Leaf query clauses):一般是在特定的字段里查询特定值,属于简单查询,很少单独使用。 复合查询(Compound query clauses)&am…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
