- 博客(5)
- 收藏
- 关注
原创 使用C#实现数据结构堆
一、 堆的介绍: 堆是用来排序的,通常是一个可以被看做一棵树的数组对象。堆满足已下特性:堆中某个节点的值总是不大于或不小于其父节点的值任意节点的值小于(或大于)它的所有后裔,所以最小元(或最大元)在堆的根节点上(堆序性)。堆有大根堆和小根堆,将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。堆总是一棵完全二叉树除了最底层,其他层的节点都被元素填满,且最底层尽可能地从左到右填入。 堆示意图: 将堆元素从上往下从左到右放进数组对象中,子父节点索引满足关系: pa
2021-06-04 17:50:16 355 1
原创 单例模式的实现
记一下学习单例模式的笔记: 单例就是要保证该类仅有一个实例。实现完全封闭的单例(外部不能new)其实就要两点要求:全局访问:需要一个该类型的全局静态变量,每次获取实例时都要判断它是否null,不存在new,存在通过一个方法直接返回该值获取实例来保证对象唯一;实例化控制:new实例不能外部new、造成实例不唯一,需要一个私有构造器禁用共有构造器。 根据new实例的时机,分为饿汉式和懒汉式:一、饿汉式单例:静态变量初始化时new 特点:加载时new,一开始全局就存在该唯一实例,每次用到
2021-06-04 17:21:18 72
原创 在类的继承和多态中对实例化顺序和方法重写用法的一些总结
总结一下使用类继承和多态时,实例化顺序以及方法继承重写中new,virtual、abstract、override的用法和规则: 继承关系:实例化对象时,作用类型范围在最初基类到具体实例对象的类之间(中间包括父类子类,成员访问权限:private、protected、public):子类实例构造器必须指定拥有父类访问权限的实例构造器:base(xxx),不写默认父类无参构造器;使用:this(xxx)指定先运行本类的某实例构造器,再由他指定执行的父类实例构造器;先实例化基类,再实例化子类,再子
2021-06-04 16:59:58 233
原创 使用FOR XML PATH实现多行数据合并成一列
有时为避免循环操作数据库、列表展示等一些原因需要将数据及关联数据批量加载进行集中处理,一种解决办法可以使用FOR XML PATH将多行数据合并成一列,达到字段拼接的效果。例如有两个表, 部门表T_Dept: 员工表T_Emp:...
2021-06-04 16:01:00 555
原创 关于.NET中迭代器的实现以及集合扩展方法的理解
在C#中所有的数据结构类型都实现IEnumerable或IEnumerable接口(实现迭代器模式),可以实现对集合遍历(集合元素顺序访问)。换句话可以这么说,只要实现上面这两个接口的类都是集合类,都能够进行遍历。工作中用过很多扩展方法对泛型集合(IEnumerable)元素进行处理,一直很想一探究竟,通过参考一些资料(主要是大话设计模式和C#从现象到本质这两本书),总结下自己对迭代器和扩展方法的一些理解:一、自己实现一个迭代器。 .NET平台已经提供了IEnumerable和IEumerator
2021-06-03 13:40:06 121
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人