习题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…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
