
C#
键盘春秋
键盘论王侯,数据写春秋~~~
展开
-
C#字典
需求通常情况下,我们可以通过int类型的索引号来从数组或者list集合中查询所需的数据。但是如果情况稍微复杂一点:索引号是非int型数据比如string或其他类型该如何操作呢。这个时候我们就可以使用字典了。顾名思义,字典是一种让我们可以通过索引号查询到特定数据的数据结构类型。关键字Dictionary说明C#的Dictionary<Tkey,TValue>类在内部维护两个数组来实现该功能。一个原创 2016-02-13 11:56:13 · 6265 阅读 · 4 评论 -
C#委托&事件
需求通过直接调用其他类的实例的方法我们就可以实现在不同的类之间实现数据交互和功能互动。但是有时候我们想让类的功能更加专注(单一职责原则),或者负责写触发事件模块的人并不知道需要触发哪些事件而写事件具体内容的人并不知道何时触发这些事件,这个时候我们就需要委托和事件了。是什么委托委托是对方法的引用。 通俗的讲就是将方法签名交给委托,然后通过调用该委托来调用它上面的所有方法。注意声明委托要使用dele原创 2016-02-19 08:21:12 · 726 阅读 · 2 评论 -
C#Lambda表达式
需求有时候我们需要传递一个很方法的引用,我们很确定这个方法仅仅会调用这一次,单独为它创建一个方法感觉有些浪费,但是又必须用到这个方法。又或者临时需要一个方法,但是思考半天想不出该给这个方法取什么名字(有过这个经历的同学握个爪)。这个时候Lambda就派上用场了。Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数。通过使用 lambda 表达式,可以写入可作为参数传递或作为函数原创 2016-02-25 22:05:39 · 4132 阅读 · 3 评论 -
C# 自定义Json解析工具
需求需求内容还是上一篇公司那个java转C#的需求,其中socket是json格式的。需求中的这个json需要能够动态增删json数据中的元素:每条数据的key和value都是动态定义的,解析出来才知道收到哪些key和value,而且有些value本身又是json数据,也就是说json数据嵌套。 需求并不复杂,但是找了找并没有找到好的json序列化和反序列化工具,.NET自带的运行时序列化和反序列原创 2016-04-29 11:13:43 · 2688 阅读 · 2 评论 -
一个简单的线程池(仿java的ScheduledFuture)
需求最近公司有一个奇葩的需求:让我把一个java的客户端插件转换为C#版本。 转换并不难,由于有java客户端的源码,基本只要照着“翻译”即可实现,实际上我是将java代码复制到C#工程中然后通过改bug的方式实现的。 由于java和C#很相似,这个干问题并不大,但是有几个java的库C#并没有。而且由于我想要将C#的DLL放到Unity中使用,所以没办法使用高版本的.NET库,导致我需要手动实原创 2016-04-17 11:33:53 · 1706 阅读 · 2 评论 -
改进版的线程池(仿java的ScheduledFuture)
需求上一篇写了一个线程池http://blog.youkuaiyun.com/ylbs110/article/details/51172428 经过仔细查询javaAPI才发现我前面一个方案并不符合要求:java中的newSingleThreadScheduledExecutor是个单线程池,也就是说一直只有一个线程在跑,新添加的任务会存储起来,线程每次跑完一个任务再获取一个新任务继续跑,没有任务则等待任务。原创 2016-04-23 10:18:49 · 3205 阅读 · 2 评论 -
C# 索引器
上一篇讲了字典,他能让我们使用除了int型编号以外的数据类型进行索引,但是这仍然无法满足我们所有的需求:比如你既想通过学号搜索到学生数据,又想通过姓名搜索到学生数据,为此建立多个字典又嫌麻烦;又或者你想获得搜索到数据的拷贝而不是引用……这个时候索引器就派上用场了。索引器是封装了一组值的智能数组,它让用户可以自定义访问类型并以数组形式访问类中的数据。索引器实际上是有参属性。原创 2016-02-14 21:36:47 · 5003 阅读 · 2 评论