随笔分类 - [05]CLR
摘要:写在前面DelegatePredicateActionFunc逆变和协变 先说下什么是委托(Delegate),委托在C#中是一种类型,和Class是一个级别,但是我们经常把它看做是一个方法。为什么是方法?准确的说应该是回调函数,在C运行时的qsort函数获取指向一个回调函数的指针,以便对数组中的元素进行排序。C#中提供了一种机制,就是委托,一种回调函数的机制。 在我们做项目的过程中,委托用到的地方很多,像线程中修改窗体的状态、窗体控件事件和异步操作已完成等,以前我们创建委托的时候用delegate关键字,而且也比较麻烦,自从C#4.0有了泛型,也就有了泛型委托,使用Predicate、A..
阅读全文
摘要:前言 今天做东西的时候碰到个正则表达式的需求,以前做数据验证的时候因为都是一些通用的东西,比如号码验证、邮箱验证等,这些网上都可以找到,但是今天遇到的是比较特别的,如下:数字0-9和小数点、字母w、小于号和小于等于号、大于号和大于等于号、加减乘除+-*/,括号()。比如“1111≥≤]*|[\.]*”,但是这一种像“”也是符合的,这就不符合要求了,又改成“^([0-9]*|[wW]*|[-+*/]*|[()]*|[≥≤]*|[\.]*)$”,这一种顺序必须对才行,也不符合,真的不知道怎么改?实在没办法让同学找了个运算符的正则“^[-+]?([0-9]+($|[-+*/]))*(((?\()[.
阅读全文
摘要:前言 在看《CLR》的时候,作者在开篇的时候提到了NGen.exe,前面一节执行程序集的代码中提到:程序或方法执行前会执行MSCorEE.dll中的JIT函数把要执行方法的IL转换成本地的CPU指令,讲代码放在内存块中,第二次调用方法的时候,由于已对方法进行了验证和编译,所以会直接执行内存块中的代码,不需要再执行JIT函数编译了。因为在方法没调用之前都会要调用JIT函数编译,在这一节的最后作者也提到,通过实验表明,CLR的JIT编译器似乎没有使自己的应用程序达到应有的性能,然后就提到了.Net Framework SDK提供的NGen.exe工具。疑问 当时看到这段话的时候很兴奋,然后就接..
阅读全文