2011年12月26日

简单的枚举位运算.

摘要: 1 定义枚举2 书写代码 阅读全文

posted @ 2011-12-26 14:52 Terry@ 阅读(200) 评论(0) 推荐(0) 编辑

2011年12月20日

如何让 C# 的枚举包含多个值.

摘要: 首先,有这么一个需求,,需要把一些值和枚举关联起来.. 常规的做法是, switch 判断并返回相应的值..但是这样代码书写起来不是很流畅,感觉不够优雅..所以就设计了一个EnumHelper类来处理类似的需求.并且保证有不弱于switch的性能执行效率. 先看看完成后的"效果图"1 定义这样一个枚举2 代码中这样调用感觉怎么样.. 很舒服是把... 直接通过枚举的扩展方法点出我需要的值..好了,,废话不说,,直接贴实现代码了..ok ,这样就可以了,,, 然后就是为每个枚举类型扩展需要的扩展方法了..如下.至此,,大功告成...如有更好的解决方案或是建议的话,,还请不吝赐 阅读全文

posted @ 2011-12-20 15:49 Terry@ 阅读(4032) 评论(1) 推荐(0) 编辑

2011年12月2日

HashSet,TreeSet和LinkedHashSet的区别

摘要: Set接口Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false。Set判断两个对象相同不是使用==运算符,而是根据equals方法。也就是说,只要两个对象用equals方法比较返回true,Set就不 会接受这两个对象。HashSetHashSet有以下特点 不能保证元素的排列顺序,顺序有可能发生变化 不是同步的 集合元素可以是null,但只能放入一个null当向HashSet结合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据 hashCode值来决定该对象在HashSet中存储位置 阅读全文

posted @ 2011-12-02 10:29 Terry@ 阅读(88538) 评论(3) 推荐(13) 编辑

Mvc TempData 本质实现

摘要: 对TempData 实现原理有疑惑的,可以参考以下TempData核心代码首先TempData 的数据被存放在一个Dictionary _data中,,也就是说,可以把TempData理解为是一个Dictionary.再看他的索引器 在set中 增加了_data 和 initialKeys. 在 get中 Remove了 initialKey在保存的时候移除掉除 initialKey 和 retailedKey 以外的所有数据.也就是说, 移除掉data中使用过的数据.并且调用了一个Provider进行保存.以便在不同Action中传递数据...跟进去发现是一个接口,,,再去找这个接口的实现找 阅读全文

posted @ 2011-12-02 10:17 Terry@ 阅读(872) 评论(1) 推荐(0) 编辑

2011年11月29日

.net 4.0 新的非托管异常处理机制.

摘要: 前几天,有一个朋友问我为什么在.NET里不能捕捉(catch)到一些异常了,而且在调试器里也捕捉不到。研究了一下,是.NET 4.0里新的异常处理机制捣的鬼。在.NET 4.0之后,CLR将会区别出一些异常(都是SEH异常),将这些异常标识为破坏性异常(Corrupted State Exception)。针对这些异常,CLR的catch块不会捕捉这些异常,即使你用类似下面的代码:try{TestMethod();}catch (Exception e){Console.WriteLine("Catching exception: {0}", e);}也没有办法捕捉到这些异 阅读全文

posted @ 2011-11-29 19:50 Terry@ 阅读(2379) 评论(0) 推荐(1) 编辑

2011年11月20日

写了个散列算法... 用来获取字符串的哈希. 超高效.10亿以下几乎无碰撞.

摘要: 阅读全文

posted @ 2011-11-20 22:26 Terry@ 阅读(339) 评论(0) 推荐(0) 编辑

2011年11月16日

关于泛型 Class中的 Static 成员.

摘要: public class A { public static int Test; } public class B:A { } public class C : A { } B.Text = 10; 这时 C.Text 也等于 10================== public class A<T> { public static int Test; } public class B : A<B> {} public class C : A<C> {} B.Tex... 阅读全文

posted @ 2011-11-16 21:58 Terry@ 阅读(215) 评论(0) 推荐(0) 编辑

2011年11月14日

使用 where 子句约束泛型类型

摘要: 代码:public interface IEntitiesProvider{ void Refresh(TEntity entity) where TEntity:class;}场景:这段代码,简答的多了,可以大致猜出来他是什么意思:定义了一个刷新一个实体的 方法。但是 where TEntity:class 真的能知道这个原理的到时 不全。发展:今天读别人的代码,到MSDN上看了下才知道出处。及用法的示例: 1.查阅MSDN上where(c#): a.定义:where 子句用于指定类型约束,这些约束可以作为泛型声明中定义的类型参数的变量。b.示例:1.类型参数 T 就可以实现 ICompar 阅读全文

posted @ 2011-11-14 19:08 Terry@ 阅读(359) 评论(0) 推荐(0) 编辑

2011年11月10日

小技巧

摘要: [EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]隐藏方法不被感知. 阅读全文

posted @ 2011-11-10 14:28 Terry@ 阅读(121) 评论(0) 推荐(0) 编辑

2011年11月5日

KMP 算法

摘要: 我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串)。比如,字符串A="I"m matrix67",字符串B="matrix",我们就说B是A的子串。你可以委婉地问你的MM:“假如你要向你喜欢的人表白的话,我的名字是你的告白语中的子串吗?”解决这类问题,通常我们的方法是枚举从A串的什么位置起开始与B匹配,然后验证是否匹配。假如A串长度为n,B串长度为m,那么这种方法的复杂度是O (mn)的。虽然很多时候复杂度达不 阅读全文

posted @ 2011-11-05 20:53 Terry@ 阅读(233) 评论(0) 推荐(0) 编辑

导航