上一页 1 ··· 5 6 7 8 9 10 11 下一页
摘要: 其实从理论上讲结构体的和一般的基本值数据类型的封送没有太大的区别,因为都是栈上内存块的处理(当然如果结构体内有引用类型的成员也需要处理堆上的内存块)。Example:(最基本的结构体封送)C++ Code:structPerson{public:LPCSTRname;intage;};_declspec(dllexport)void_stdcallPrintPerson(Personperson){setlocale(LC_ALL,"chs");wprintf(L"PersonName:%s,Age:%d",person.name,person.age) 阅读全文
posted @ 2012-11-11 15:53 self.refactoring 阅读(1128) 评论(0) 推荐(0) 编辑
摘要: 如果是写过C++的肯定一提到字符就会想到字符编码(Multibyte或Unicode)。写.NET程序的便不会考虑这个,因为在CLR环境中默认会采用Unicode编码。(其实刚毕业的时候写了很久的.NET程序却完全不知道编码这回事,因为在.NET环境中好像不知道编码技术也不会对开发有什么影响。因此个人感觉出于对计算机科学系统学习,最好还是从非托管环境开始学习程序设计)。那在调用非托管的方法时,如何解决编码问题呢?答案是要用到DllImportAttribute的CharSet属性。根据MSDN对CharSet的说明如下:CharSet可能有:Ansi调用时将字符参数封送为Ansi编码的字符Un 阅读全文
posted @ 2012-11-06 17:33 self.refactoring 阅读(564) 评论(0) 推荐(0) 编辑
摘要: 最近需要在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 阅读(759) 评论(0) 推荐(0) 编辑
摘要: 一开始看到WPF里面经常用如下语句来构造资源文件Uri:Uri uri = new Uri("/AssemblyName;component/image.png");我还以为这种格式的字符串是URI标准规定的,但是网上查了一下却没发现有这种格式的URI字符串。URI是统一资源标识符,通用文法为:协议名(http,https,ftp,file等)+冒号+协议所对应的内容URI又分为URL和URN,URL是用来定义一个资源的访问路径.而URN则是用来定义一个资源的名称。(http://zh.wikipedia.org/zh/统一资源标志符)仔细看了一下MSDN,才发现上面格式的 阅读全文
posted @ 2012-10-08 23:05 self.refactoring 阅读(3515) 评论(3) 推荐(1) 编辑
摘要: 什么是Build Action? Build Action is how the file relates to the build and deployment processes.在Visual Studio 2010的Windows Phone工程中, 有多个build action。它们之间有什么区别呢?* None: 此文件不参与编译也不被输出。比如:工程中的文档文件, readme.txt。* Compile: 参与编译并输出。主要是代码文件。* Content: 不参与编译,但会被输出。* Embedded Resource: 此文件被嵌入到主工程生成的DLL或exe中。主要是资 阅读全文
posted @ 2012-10-06 18:44 self.refactoring 阅读(361) 评论(1) 推荐(1) 编辑
摘要: Linq to sql是.NET上的ORM类库。因此首先我们需要定义O(Object),此处我们定义如下类:View Code publicclassCode{publicstringId{get;set;}publicstringCodeTypeId{get;set;}publicstringCodeExtensionId{get;set;}publicstringCodeValue{get;set;}publicstringDisplayText{get;set;}接下来就需要定义R(Relationship)和M(Mapping)Linq to sql为我们提供两种方式来进行Relati 阅读全文
posted @ 2012-10-06 02:13 self.refactoring 阅读(461) 评论(0) 推荐(0) 编辑
摘要: Xml其实经常用到,但是对于它却没有系统的学习过。只是知道大概是怎么回事。国庆假期参照W3School系统的温习了一下,将笔记记于此,以免过一段时间不用又忘记了。我画了一幅图可以简要的概括一下Xml的基本概念:这里面有两点是我之前比较疑惑或者不知道的,图中也有用数字进行标识:(1)Xml命名空间 Xml文档中每一个元素,属性都会有一个名字。比如图中的Name元素的名字就是Name.它的语义是Person的姓名。但是如果要用Xml元素来描述Car的名字(比如:“法拉利”),最直观的元素名字也是Name.如果这两从此Name元素出现在一个Xml文档中,则会导致混乱,相同名字的Xml元素会有不一样. 阅读全文
posted @ 2012-10-05 17:05 self.refactoring 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 前言 在谈谈VS中的模板中,我介绍了如何创建项目/项模板,这种方式可以在创建项目时省却不少重复性的工作,从而提高开发效率。在创建好了项目和文件后,就得开始具体的编码了,这时又有了新的重复性工作,就是需要经常编写一些类似或者说雷同的代码,我们需要一种方法将这些代码管理起来,减少重复输入。一个常见的例子,在使用for语句结构时,可能会有这样的代码:int[] array = { 1, 2, 3, 4, 5 };for (int i = 0; i < array.Length; i++){Console.WriteLine(array[i]);}或者List<string> nam 阅读全文
posted @ 2012-08-25 15:22 self.refactoring 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 《.NET高级编程》中对反射的定义是:通过编程访问程序集中元数据的技术称为反射。元数据那什么是元数据呢,这里引用CSDN某帖子上对MSDN上对元数据定义的翻译(也有可能是直接从中文版的MSDN Copy过来的)。“元数据是一种二进制信息,用以对存储在公共语言运行库可移植可执行文件 (PE) 文件或存储在内存中的程序进行描述。将您的代码编译为 PE 文件时,便会将元数据插入到该文件的一部分中,而将代码转换为 Microsoft 中间语言 (MSIL) 并将其插入到该文件的另一部分中。在模块或程序集中定义和引用的每个类型和成员都将在元数据中进行说明。当执行代码时,运行库将元数据加载到内存中,并引. 阅读全文
posted @ 2012-08-05 17:55 self.refactoring 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 其实.NET开发大部分时候都不需要我们去考虑内存的分配与释放的问题。因为在托管环境中,内存的分配与回收是.NET运行库会自动去做的事情。但是如果需要写出高效,严谨的代码或者需要进行非托管资源的管理,我觉得还是应该对系统自动给我们做的这些事情有一些深入的了解。之前我对于这方面的了解也是一支半解,甚至有些理解是错误的。这两天认真学习了一下,记录在这里做个总结。我觉得这方面主要应该包括三个方面:内存的分配,内存的回收,内存的回收的控制1. 内存的分配.NET程序中主要有两大类数据类型:值类型与引用类型。.NET Framework会分别为这两种类型的数据类型在线程栈和托管堆上分配内存空间。-值类.. 阅读全文
posted @ 2012-07-29 15:07 self.refactoring 阅读(563) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 下一页