C# 重点知识系列
文章平均质量分 60
c# 委托/事件/集合/泛型/反射/特性等
Marzlam
志远行近/一步一个小目标-每个阶段做最好的自己~ 三年计划启动中·
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C# 一文读懂委托与事件
诞生:技术点出来的原因就是 有一些需要将方法作为入参 处理的情况 比如 业务处理完需要回调函数 那就需要传函数入参委托是C#中的一种类型安全函数指针,允许将方法作为参数传递或存储。它本质上是面向对象的,对方法签名抽象封装(参数列表和返回类型),并支持多播(绑定多个方法)。事件是基于委托的发布-订阅模式,用于对象间通信。它封装了委托的调用权限,确保外部代码只能通过+=和-=订阅或取消订阅。就是特殊的委托加了权限的委托只允许在声明的类内部 进行invoke 哪怕子类也不行 外部调用也不行。原创 2025-03-17 17:04:06 · 1406 阅读 · 0 评论 -
C# 集合 类型对比list、Ilist<T>、ICollection<T>、IEumerable<T>
Eumerable 对象是linq中静态类里面的一些方法 是对于IEnumerable的扩展 所以当使用linq的时候里面一些方法都可以用是。再来说ICollection 定义操作泛型集合的方法,可以看到截图中有一些封装的处理集合的方法。而linq对IEumerable进行了扩展封装,使得linq使用的时候可以用到很多的方法。所以说他是集合中必不可少的用到的迭代 所以每个集合和接口都继承他是理所应当的。● 如果想遍历、修改、添加、清空、使用索引,使用IList, IList。原创 2025-03-17 10:44:06 · 295 阅读 · 0 评论 -
C# 序列化:通俗易懂解析
为什么要使用序列化:序列化就是让一系列手动赋值的过程进行了封装,从而提高效率!之前如果要对一个对象处理的话,那么就需要对对象中的值一个一个赋内容,这样的话就比较浪费时间,而且有层次结构的话,赋值传值接收值都比较麻烦。所以序列化就是简化这个过程,运用序列化 一般将对象序列成json的格式 然后传值 运用反序列化将 json在转回对象什么叫序列化?我们都知道对象是暂时保存在内存中的...原创 2019-11-15 13:44:02 · 395 阅读 · 0 评论 -
C# 特性Attribute
1:什么是特性?特性就是特有属性 特质属性,自定义的一些规则。类似于注释说明,但是又是程序中需要识别的内容需要处理。我个人理解就是方法使用说明书 在控制器或者类上【】告知使用规则。Attribute不是什么“修饰符”,而是一种实例化方式比较特殊的类。2:为什么要使用特性?因为项目经常需要一些定制的规则应用于 多个控制器或者多个类上,使用特性也是为了将规则能够更广泛更便捷的使用。...原创 2019-11-15 18:04:21 · 375 阅读 · 0 评论 -
C# 闭包写法 lambda 表达式
比如 (x,y)=>{return x+y;如果一个参数可不带(),如果逻辑简单可以不{}linq 表达 比 linq表达式要更简便。就是lambda表达式 引用了方法体外变量。1.用于 匿名委托函数表达。2.用于linq 查询表达。如果没有参数可以_来代替。(参数)=》{ 逻辑}原创 2024-12-18 17:00:58 · 466 阅读 · 0 评论 -
C# list集合分批次处理
业务场景:很多情况下一个集合得数据可能过于庞大,需要批次去处理。比如 一共有360条数据,50为一组去处理 那么就需要 8组,所以需要注意的就是最后一次不够50的话,要算出来10。所以需要用到的方法就是 GetRange public bool PushProductToBInit() { //获取当前商品 var pushlist = _productToBService.GetAllProductToBSysNoList();原创 2022-03-21 10:33:13 · 2143 阅读 · 0 评论 -
C# 利用反射获取枚举值的值和中文描述
枚举: public enum YNStatus : int { [Description("是")] Yes = 1, [Description("否")] No = 0, }获取枚举和中文描述public Dictionary<int, string> GetEnumList() { var rtn = new n原创 2021-08-03 17:14:46 · 1506 阅读 · 0 评论 -
C# 工作流中审批会对比内容变化利用反射
思路:找到要更新的 找到原来的 然后利用反射 属性值一一对比 新加的,更新的 删除的 字段名字和内容加到一个集合中//变动的字段 和 变动后的值public class UpdateInfo { public string Field { get; set; } public string Value { get; set; } }//信息变更 查看详情需要 找到哪些人员信息变动了 var ...原创 2021-03-12 10:53:35 · 220 阅读 · 0 评论 -
C# 递归思路之捕获异常实现
思路:一般是有父子关系 需要 层层去拿子数据的操作 (核心的操作 找下层然后返回赋值 children集合属性 或 一个变量)重点:自己调用自己 而且返回值 是 核心需求返回 (自己调用自己return出去 或者 直接 放到 children集合里面 总之就是出口)比如就是 异常捕获 一层一层的 需要找最根本的 异常提示 try { } catch (Exception ex) ...原创 2020-10-30 17:51:05 · 754 阅读 · 0 评论 -
C# 数组/集合/字典 区别
C# 常用 的 类型 int string 日期 字典1.Dictionary<string, string> 好处是没有 具体的类那样,用起来不用束缚住比如 经常接口接收参数的话 会 建立一个对应的 dto类对象 去接收而且一般是集合的话 list<model> 这样接收的但是有的情况下 建立model 类对象接收 过于麻烦 用字典项接收2.但是 处理数据的时候 就不如类 那么的清晰明了 因为类的话 成员属性 是 model.A 这样...原创 2020-08-12 14:28:06 · 802 阅读 · 0 评论 -
C# 循环中的三种状态continue,break,return,goto
在for循环中的三种情况:1:contine 结束循环中的本次循环,接着循环下一次2:break 结束循环体,执行循环体外的方法代码3:return 结束方法,循环体外代码略过...原创 2020-03-06 15:55:46 · 482 阅读 · 0 评论 -
C# GDI+画板之Graphics类
首先了解一下这个Graphics东西总体来说画东西 就是先 画布 然后画笔 去画形状 用什么字体 什么颜色 画的位置 画的内容下面是自己写的一个简单列子:方法画出来,然后保存画板成img的这样一个文件。然后前台显示的时候其实是显示出来的一张图片。为了方便复制画出来大概是这个样子然后页面用 方法返回的img 直接放到src属性中<img src="@Ur...原创 2020-02-27 16:33:40 · 761 阅读 · 0 评论 -
C# 资源回收(托管和非托管)和捕获异常
首先说一下 关于数据的这几个概念一:资源回收就是把不用的占用给清掉 类似清空回收站操作 分为自动操作(托管) 和手动 操作(非托管)1:如何知道是否是托管和非托管?在C/C++中,资源都是需要手动释放的,比如,你new了一个指针,用过之后就需要delete掉,否则就会造成内存泄露。C#中的每一种类型都是一种资源,而资源又分为托管资源和非托管资源。托管资源:由CLR管理分配和释...原创 2019-12-05 15:27:04 · 1873 阅读 · 0 评论 -
C# 反射Reflect
什么是反射反射 其实就是一个微软帮助类库 读取元数据并使用 为了可扩展动态加载 减少对象与对象之间的依赖 但是消耗性能原创 2019-11-18 16:36:33 · 457 阅读 · 0 评论
分享