写了快5年代码了,一直都是使用别人发明的语言,别人发明的框架做快速开发,还从来没有真正深刻的学习过底层的一些东西,于是今年我打算读《CLR Via C#》这本书,认识一下C#的底层,我觉得看这本书起码对日后代码的调优有用,以下读书笔记仅记录我在读书过程中看到的认为有用的,平时不容易被注意到的点。先按照顺序记录,直到书完全看完的那天会对这篇文章做一个分类整理。
第四章-类型基础
if (o is String)//第一次检查
{
String b = (String)o;//第二次
}
//为此.net发明了as简化这个过程
String a = o as String;
if(a != null){//虽然此处依然有第2次判断,但判断是否空指针速度要比类型判断来得快
//...
}
如果有多个命名空间下存在同名的类,那么在代码中就必须写完全限定名来new 对象,麻烦。这时可以使用别名来定义这些完全限定名,例如
using a;
using b;
using testa = a.Widget;
于是原本代码中你可能要这样写 a.Widget = new a.Widget();
有了别名你只要这样写 testa = new testa();
好几天忘了更新这条随笔了,中间又看了好多页,此处省略部分笔记,将来有空补上。。。。
今天看到一点关于代码效率的,在代码中尽可能多的使用值类型而不要使用引用类型,省内存
然后代码中尽量避免装箱,例如下面这段代码
int a = 5;
console.writeLine("{0}{1}{2}",a,a,a);//这行会被装箱3次
object o = a;//装箱1次
console.writeLine("{0}{1}{2}",o,o,o);//这行不会产生装箱,速度快,省内存