- 博客(8)
- 资源 (1)
- 收藏
- 关注
原创 C# 用散列表设计一个集合类
集合的主要操作包括:并集、交集、判断是否为子集、取差异集合。C# 中没有提供集合数据类型或集合数据结构,用散列表作为基本数据存储是设计集合类型的比较有效的方式。其中,设计的一个关键就就,要先创造一个临时存储数据的实例,在本代码中,用命名为 temp。 public class CSet { Hashtable data; public CS
2016-12-28 20:04:20 761
原创 C# 二叉树的综合操作(二):删除节点
删除二叉树的节点相对复杂一些。 要分为三种情况:(1)要删除的节点为叶子节点,即此节点没有子节点;(2)要删除的节点只有一个子节点;(3)要删除的节点有两个子节点。其中每种情况又要细分为同种情况:要删除的节点是其父节点的左子节点,以及,要删除节点是其父节点的右子节点。 删除操作需要用到上一章说的到的“查找方法”。将上一章的代码加入 Delete(int key)方法,完事代码好 p
2016-12-28 14:41:52 1708
原创 C# 二叉树的综合操作(一):查找、插入、最大(小)值、先序遍历、后序遍历及中序遍历
二叉树是学习数据结构与算法的重要内容,现做综合操作二叉树的汇总。由于关于这方面的文章、书籍已是随处可见,故此间的细节不再赘述,附上一段代码,并提供实例,供参考。代码已测试没有问题。 public class Node // 定义二叉树节点类 Node { public int Data; pu
2016-12-28 14:13:31 1389
原创 C# 性能测试程序及编写要点
直接看程序: class Timing { TimeSpan timestart; TimeSpan duration; public void Start() { GC.Collect(); GC.WaitForPendingFinalizers();
2016-12-04 11:31:08 687
原创 C#代码性能测试程序编写要点
直接看程序: class Timing { TimeSpan timestart; TimeSpan duration; public void Start() { GC.Collect(); GC.WaitForPendingFinalizers();
2016-12-04 11:06:22 1686
原创 浅谈 C# 协变与逆变中 “out” 与 “in” 关键字的必要性
近来经常涉及泛型委托及接口的协变与逆变的问题,在网上搜索的时候,人们都是在反复地强调协变和逆变的概念,强调什么时候要加关键词out,什么时候要加in。可是鲜有人去说明:为何这时要用out,为什么就必须要用in。下面我就在文章中稍作一下解释,可能解释的有不妥的地方,欢迎指正。 首先先说说协变,先说泛型委托中的协变,看例子:class Animal { public int
2016-10-28 20:51:07 2445 2
原创 c# 泛型中类型参数约束 之 主约束的解读
在一本书中看到 ”主约束“ 一词,比较生疏。百度了一下,竟然没找到解释,经过测试,终于搞懂了。既然如此,那我就就此写一篇,希望能帮助到遇到同样困惑的筒子们。 参数约束主要有六种:(下表摘自 MSDN 的表格)where T: struct类型参数必须是值类型。 可以指定除 Nullable 以外的任何值类型。
2016-10-26 13:59:21 641
原创 如何将基类的引用转换为派生类的引用
程序(1): class A { public int AValue; } class B :A { public string BName { set; get; } } class Program { static void Main(string[] args) { B bTest1 = n
2016-10-24 15:35:52 1613
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人