《CLR Via C#》读书笔记,持续更新...

写了快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();

时间: 2024-08-07 12:02:14

《CLR Via C#》读书笔记,持续更新...的相关文章

BLE资料应用笔记 -- 持续更新

BLE资料应用笔记 -- 持续更新 BLE 文档 小书匠 蓝牙 4.0 ●分Single mode与Dual mode. ●Single mode只能与BT4.0互相传输无法向下兼容(与3.0/2.1/2.0无法相通);Dual mode可以向下兼容可与BT4.0传输也可以跟3.0/2.1/2.0传输 ●超低的峰值.平均和待机模式功耗,覆盖范围增强,最大范围可超过60米. ●速度:支持1Mbps数据传输率下的超短数据包,最少8个八组位,最多27个.所有连接都使用蓝牙2.1加入的减速呼吸模式(sn

Sqlserver 笔记 持续更新

1.sp_spaceused : sp_spaceused table_name --------------------------------------------------------------------------------------------- name  rows  reserved  data  index_size  unused table_name 16470592  36315696KB  35796160KB  519432KB  104KB name  -

IAP(In-App Purchase) 集成笔记-持续更新

IAP(In-App Purchase) 集成笔记-持续更新 IAP的集成已经有很多教程,包括apple官方的说明,足够详细,但其过程中一些坑免不了要遇到,总结一些经验,避免绕弯路.和apple打交道的模式永远不是技术为主,而是如何了解规则,应对规则 我的App该不该集成IAP? 大多数App不需要集成IAP,除非类似游戏道具,金币.或者App的功能的全部或者部分依赖于其他虚拟服务和商品,或者硬件,而这些如果需要购买,必须集成IAP.除了游戏类,特定设备的客户端,比如某个支持认证的WiFi热点A

【阅读笔记】计算机网络 第五版 阅读笔记(持续更新)

计算机网络 第五版阅读笔记 第一章 概述 1.因特网的组成 边缘部分:由所有连接在因特网上的主机组成 核心部分:由大量网络和连接这些网络的路由器组成 2.计算机之间的通信方式 客户服务器端方式(C/S模式):客户端是服务请求方,服务器端是服务提供方 对等方式(P2P模式):平等,对等连接通信,每一个主机既是客户又是服务器. 3.电路交换,分组交换和报文交换 3.1 电路交换:建立连接(占用通信资源)->通话(一直占用)->释放连接(释放通信资源). 优点:在通话的全部时间内,通话的两个用户始终

CLR via C#读书笔记 CLR寄宿和AppDomain

寄宿 寄宿是指让其他应用程序(非托管代码)使用CLR的能力,比如自己用C++开发的窗体能创建CLR实例. 托管代码也能调用非托管代码 [DllImport("kernel32.dll")] public static extern int WinExec(string exeName, int operType); 通常会调用win32 api,但是要查文档才知道怎么定义extern方法 CLR实际上被实现为COM服务器,可以通过CoCreateInstance或CLRCreateIn

Clr Via C#读书笔记---程序集的加载和反射

#1 加载程序集 Assembly.Load: public class Assembly { public static Assembly Load(AssemblyName assemblyRef); public static Assembly Load(String assemblyString); } 在内部,Load导致CLR向应用程序集应用一个版本绑定重定向策略,并在GAC中查找程序集.如果传递的是一个弱命名程序集,不会应用版本绑定重定向策略,也不会去GAC中查找程序集. AppD

Clr Via C#读书笔记---CLR寄宿和应用程序域

#1 CLR寄宿: 开发CLR时,Microsoft实际是将他实现成包含在一个dll中的COM服务器.Microsoft为CLR定义了一个标准的COM接口,并为该接口和COM服务器分配了GUID.安装.NET Framework时,代表CLR的COM服务器在Windows注册表中注册. 任何Windows应用程序都可以寄宿CLR,非托管宿主应该调用MetaHost.h文件中声明的CLRCreateInstance函数,该函数是在MSCoreEE.dll文件中实现的,该dll被称为"垫片"

Clr Via C#读书笔记---线程基础

进程与线程 进程:应用程序的一个实例使用的资源的集合.每个进程都被赋予了一个虚拟地址空间. 线程:对CPU进行虚拟化,可以理解为一个逻辑CPU. 线程要素 线程包括以下要素: 1. 线程内核对象, 其中包含 1)一组对线程进行描述的属性 2)线程上下文,即包含CPU寄存器的集合的一个内存块 2. 线程环境块,在用户模式中分配和初始化的一个内存块,其中包含 1)线程的异常处理链首 2)线程的"线程本地存储数据" 3)由GDI和OpenGL图形使用的一些数据结构 3. 用户模式栈 1)存储

Git学习笔记(持续更新)

强制同步为远程的代码 远程仓库回退了commit的情况下(第2条描述之情况),强制同步远程的代码到本地 #更新远程最新的所有代码,但是不merge或者rebase git fetch --all #直接reset到master,也就把刚才fetch的更新了 git reset --hard origin/master 回退版本 #回退本地版本git reset --hard <commit_id>#强制提交到服务器 git push origin HEAD --force 新建分支和远程分支

Clr Via C#读书笔记---垃圾回收机制

#1 垃圾回收平台的基本工作原理: 访问一个资源所需的具体步骤: 1)调用IL指令newobj,为代表资源的类型分配内存.在C#中使用new操作符,编译器就会自动生成该指令.2)初始化内存,设置资源的初始状态,使资源可用.类型的实例构造器负责设置该初始状态.3)访问类型的成员(可根据需要反复)来使用资源.4)摧毁资源的状态以进行清理.正确清理资源的代码要放在Finalize, Dispose和Close方法.5)释放内存.垃圾回收器独自负责这一步. 托管堆如何知道应用程序不再用一个对象? 托管堆