随笔分类 -  .NET CLR

.NET CLR随笔
摘要:最近需要在C#中调用C++代码,正好学习一下.NET中的平台调用服务(Platform Invoke Service)。在此记录下学习的心得。我会从以下几方面去学习:1. Platform Invoke的基础(对应.NET类库的基本用法,基本数据结构的封送规则)2.Platform Invoke in CLR (2) --字符的封送(Marshal)3. Platform Invoke in CLR (3) --结构体的封送(Marshal)4.Platform Invoke in CLR (4) --不透明指针(IntPtr)和Marshal工具类5. Platform Invoke i.. 阅读全文
posted @ 2012-11-04 22:24 self.refactoring 阅读(784) 评论(0) 推荐(0)
摘要:《.NET高级编程》中对反射的定义是:通过编程访问程序集中元数据的技术称为反射。元数据那什么是元数据呢,这里引用CSDN某帖子上对MSDN上对元数据定义的翻译(也有可能是直接从中文版的MSDN Copy过来的)。“元数据是一种二进制信息,用以对存储在公共语言运行库可移植可执行文件 (PE) 文件或存储在内存中的程序进行描述。将您的代码编译为 PE 文件时,便会将元数据插入到该文件的一部分中,而将代码转换为 Microsoft 中间语言 (MSIL) 并将其插入到该文件的另一部分中。在模块或程序集中定义和引用的每个类型和成员都将在元数据中进行说明。当执行代码时,运行库将元数据加载到内存中,并引. 阅读全文
posted @ 2012-08-05 17:55 self.refactoring 阅读(242) 评论(0) 推荐(0)
摘要:其实.NET开发大部分时候都不需要我们去考虑内存的分配与释放的问题。因为在托管环境中,内存的分配与回收是.NET运行库会自动去做的事情。但是如果需要写出高效,严谨的代码或者需要进行非托管资源的管理,我觉得还是应该对系统自动给我们做的这些事情有一些深入的了解。之前我对于这方面的了解也是一支半解,甚至有些理解是错误的。这两天认真学习了一下,记录在这里做个总结。我觉得这方面主要应该包括三个方面:内存的分配,内存的回收,内存的回收的控制1. 内存的分配.NET程序中主要有两大类数据类型:值类型与引用类型。.NET Framework会分别为这两种类型的数据类型在线程栈和托管堆上分配内存空间。-值类.. 阅读全文
posted @ 2012-07-29 15:07 self.refactoring 阅读(588) 评论(0) 推荐(0)
摘要:1. 委托的定义个人理解为将某类方法(方法签名相同,不论是私有方法,公有方法还是静态方法,实例方法)进地类型化的途径。可以类比于其他的类型例如:System.Int是对整数这一类具有共同特征的数据的一个类型化。2. 委托的作用通过委托,可以将某个方法作为参数进行传递。并且能够通过委托对传递的方法以进行签名检查。3. C#中定义委托C#中采用如下方式定义委托:public delegate ReturnType MethodName(Parameters(Type&Name))例如. public delegate void EventHandler(object sender,Even 阅读全文
posted @ 2012-07-25 23:20 self.refactoring 阅读(324) 评论(0) 推荐(0)
摘要:在使用C#这种语言的时候,有时候实现一个功能有很多的方法。在写代码的时候有时候根本不会仔细考虑该去用哪一种方法,根据自己的习惯去使用其中一种方法。甚至有时根本不用去思考为什么这个方法可以,纯粹根据经验来写程序。这就是C#,门槛比较低,很多基础东西不需要了解照样可以开发软件,做网站。过去我也是这样,但是突然间感觉到:作为一个工程师,应该有严谨的逻辑思维,在选择一件方法去实现某个功能的时候应该需要有强有力的理由证明选择这个方法是对的。如果在做一件事情的时候连为什么要这么做都说不清楚,那又怎么判断自己做的是对的呢?因此我要时刻提醒自己:在写程序的时候,要经常问自己为什么要这样来写.不要让自己的经验蒙 阅读全文
posted @ 2011-07-24 14:32 self.refactoring 阅读(259) 评论(0) 推荐(0)
摘要:当采用默认构造函数List<int> value = new List<int>();实例化一个List<T>对象时,.Net Framework只是在内存中申请了一块内存来存放List<T>对象本身(不包含List当中的Items元素)。当为List<T>对象添加第一个Item元素时,List<T>对象会申请能存储4个Item元素的内存空间,然后将Item元素存放在申请的空间里。List<T>对象有一个Capacity属性用来表示当前List<T>对象的容量(即当前用于存放Item的内存空间能存放 阅读全文
posted @ 2009-12-06 15:11 self.refactoring 阅读(2034) 评论(0) 推荐(0)