随笔分类 - .Net
.Net 相关
摘要:.Net 中自带了一个位压缩数组 BitArray,它的功能也跟数组一样,只能对每一位进行操作,而不能添加或删除位。这里介绍的 BitList 类,就是自己写的能够添加、删除位的位压缩列表。
阅读全文
摘要:在词法分析中,正则表达式是一种描述词素的重要表示方法,它可以非常高效的描述处理词法单元时要用到的模式类型。这里介绍了词法分析中用到的正则表达式的定义、表示,以及用 NFA 和 DFA 进行模式匹配的简单原理。
阅读全文
摘要:本文介绍了一个用于词法分析器的,可以支持无限制回退的输入缓冲类,以及如何实现在代码中定位行号和列号。
阅读全文
摘要:C# 中的 Encoding.Default.GetByteCount 方法,使用的时候却有很容易忽视的内存问题,具体表现为多次(数万次,不同电脑可能不同)调用 GetByteCount 方法时,会导致内存垃圾回收,那么意味着在这个过程中产生了大量的临时对象。
阅读全文
摘要:词法分析是编译原理的第一步,本篇文章会对词法分析做综合性的概述,介绍其中用到的技术和大致的流程。
阅读全文
摘要:.Net 的反射是个很好很强大的东西,不过它的效率却实在是不给力。本篇文章同样是讨论利用委托来加速反射调用函数,不过重点并不在于如何提升调用速度,而是如何更加智能的构造出反射的委托,并最终完成一个方便易用的委托创建器 DelegateBuilder。
阅读全文
摘要:这篇随笔介绍了一个比较完整的 C# 中泛型方法的类型推断的实现。这里所谓的“泛型方法的类型推断”,指的是根据已有的方法实参的类型,推断出泛型方法的类型实参。对于泛型方法 void Method(T[] args),如果我给出方法实参类型是 int[],那么则能够推断出 T = int。
阅读全文
摘要:在进行反射时,一个名为 binder 参数很少被使用,但实际上它可以几乎完全控制反射的工作方式。本篇随笔中我将解释 binder 参数到底是做什么的,并且实现了一个支持反射泛型方法和支持强制类型转换的 PowerBinder 类。
阅读全文
摘要:DescriptionAttribute 经常被用来为属性或事件提供说明,在一些用户界面中,就可以提供一些额外的信息。但是,并没有内建对枚举项的 DescriptionAttribute 的支持,这里介绍了枚举项的 DescriptionAttribute 的提取、解析以及在 PropertyGrid 中显示。
阅读全文
摘要:C# 中提供了两个运算符 is 和 as 和 Type.IsAssignableFrom 方法来判断两个类型是否兼容,但不能判断类型间是否可以隐式或强制类型转换,只能自己来完成这个功能。
阅读全文
摘要:一个改进的 LRU(Least recently used,最近最少使用)算法的缓冲池实现。
阅读全文
摘要:字符串的逆序是个非常简单的算法,但是对于 Unicode 字符串来说,简单的方法并不完全正确,因为 Unicode 里有复合字符和代理项对这两种特殊些的东西,它们必须被特殊出处理才可以。
阅读全文
摘要:有时候在处理一些网络信息的时候,难免要对中文进行 Unicode 转义。为了方便编码和解码,就写了两个函数来做这件事。
阅读全文