深入.net实质讨论系列(七)
第Ⅰ部分 C# 语 言 进程:4GB虚拟内存 应用程序域: 一个应用程序使用一些 虚拟内存 应用程序域: 另一个应用程序使用一些虚 拟内存 图 1-3 如果不同的可执行文件都运行在同一个进程空间中,显然它们就能轻松地共享数据,因为理论上它们可以直接访问彼此的数据。虽然在理论上这是可以实现的,但是CLR会检查每个正在运行的应用程序的代码,以确保这些代码不偏离它自己的数据区域,保证不发生直接访问其他进程的数据的情况。这初看起来是不可能的,如何告诉程序要做什么工作,而又不真正运行它? 实际上,这么做通常...
深入.net实质讨论系列(六)
第Ⅰ部分 C# 语 言 类型 引用类型 接口类型 值类型 指针类型 自我描述类型 内置值类型 用户定义 的值类型 枚举 数组 类类型 委托 装箱的值类型 用户定义的 引用类型 图 1-1 这个树形结构中的类型说明如表1-1所示。 表 1-1 类 型 含 义 Type 代表任何类型的基类 Value Type 代表任何值类型的基类 Reference Types 通过引用来访问,且存储在堆中的任何数据类型 Built-in Value Types 包含大多数标准基本类型,可以表示数字、Boolean值或字符 Enumerations 枚举值的集合 User-defined Value Types 在源代码中定义,且...
深入.net实质讨论系列(五)
第1章 .NET体系结构 (5) COM和COM+ 从技术上讲,COM 和 COM+并不是面向.NET 的技术,因为基于它们的组件不能编译为IL(但如果原来的COM组件是用C++编写的,使用托管C++,在某种程度上可以这么做)。但是,COM+仍然是一个重要的工具,因为其特性没有在.NET中完全实现。另外,COM组件仍可以使用——.NET组合了COM的互操作性,从而使托管代码可以调用COM组件,COM组件也可以调用托管代码(见第33章)。在一般情况下,把新组件编写为.NET组件,大多是为了方便,因为这样可以利用.NET基类和托管代码的其他优点。 1.3 中间语言...
深入.net实质讨论系列(四)
第Ⅰ部分 C# 语 言 (2) Visual C++ 2005 Visual C++ 6有许多Microsoft对Windows的特定扩展。通过Visual C++ .NET,又加入了更多的扩展内容,来支持.NET Framework。现有的C++源代码会继续编译为内部可执行代码,不会有修改,但它会独立于.NET运行库运行。如果让C++代码在.NET Framework中运行,就可以在代码的开头添加下述命令: #using <mscorlib.dll> 还可以把标记/clr 传递给编译器,这样编译器假定要编译托管代码,因此会生成中间语言,而不是内部机器码。C++的一个有趣的问题是在编译托管代码时,编译器...
深入.net实质讨论系列(三)
1.2 公共语言运行库 .NET Framework 的核心是其运行库的执行环境,称为公共语言运行库(CLR)或.NET运行库。通常将在CLR的控制下运行的代码称为托管代码(managed code)。 但是,在CLR执行编写好的源代码之前,需要编译它们(在C#中或其他语言中)。在.NET中,编译分为两个阶段: (1) 把源代码编译为Microsoft中间语言(IL)。 (2) CLR把IL编译为平台专用的代码。 这个两阶段的编译过程非常重要,因为Microsoft中间语言(托管代码)是提供.NET的许多优点的关键。 托管代码的优点 Microsoft中间语言与Java字节代码共享一种理...
深入.net实质讨论系列(二)
1.1 C#与.NET的关系 C#是一种相当新的编程语言,C#的重要性体现在以下两个方面: ● 它是专门为与Microsoft的.NET Framework一起使用而设计的。(.NET Framework 是一个功能非常丰富的平台,可开发、部署和执行分布式应用程序)。 ● 它是一种基于现代面向对象设计方法的语言,在设计它时,Microsoft还吸取了其 他类似语言的经验,这些语言是近20年来面向对象规则得到广泛应用后才开发出 来的。 有一个很重要的问题要弄明白:C#就其本身而言只是一种语言,尽管它是用于生成面 第Ⅰ部分 C# 语 言 向.NET环境的代码,但它...
深入.net实质讨论系列(一)
第一 章 .NET 体系结构 我们不能孤立地使用C#语言,而必须和.NET Framework一起考虑。C#编译器专门用于.NET,这表示用C#编写的所有代码总是在.NET Framework中运行。对于C#语言来说,可以得出两个重要的结论: ● C#的结构和方法论反映了.NET基础方法论。 ● 在许多情况下,C#的特定语言功能取决于.NET的功能,或依赖于.NET基类。 由于这种依赖性,在开始使用C#编程前,了解.NET的结构和方法论就非常重要了,这就是本章的目的。 本章首先了解在.NET 编译和运行所有的代码(包括 C#)时通常会出现什么情况。对这些内容...
MSIL Instruction Set
Base Instructions Instruction Description Stack Transition 1 add add two values, returning a new value …, value1, value2à…, result 2 add.ovf.<signed> add integer value with overflow check …, value1, value2à…, result 3 and bitwise AND …, value1, value2 à…, result 4 arglist get argument list … à …, argListHandle 5 beq.<length> branch on equal …, value1, value2 à … 6 bge.<length> branch on g...
代码注释要怎么写才“优秀”?看高手
你看到过的最好的代码注释是什么样的?你看到过最强悍的代码注释是什么样的?你最喜欢的代码注释是怎么样的? 这个问题给出的回答的前10条: 1、 // 亲爱的维护者:// 如果你尝试了对这段程序进行‘优化’,// 并认识到这种企图是大错特错,请增加// 下面这个计数器的个数,用来对后来人进行警告:// 浪费在这里的总时间 = 39h 2、 /** * 致终于来到这里的勇敢的人:你是被上帝选中的人,英勇的、不辞劳苦的、不眠不修的来修改我们这最棘手的代码的编程骑士。你,我们的救世主,人中之龙,我要对你说:永远不要放...
初一女生藏多张色情动漫碟
初一女生藏多张色情动漫碟 父亲发现报警. 发现这些影碟后,黄先生当天就没心思上班了,一直在家等待孩子。“我脾气不好,愣是没忍住!”黄先生说,下午女儿刚回到家,他就抽了女儿两个耳光,但打完后就后悔了。女儿委屈地哭了,说这些影碟是在西北工业大学东门附近的一家音像店买的,当时买的时候并不知道里面的内容。而黄先生虽然生气,却不知道怎么跟女儿说,只是告诉孩子:“这些东西你不能看!” 无意中发现女儿买的动漫影碟里有色情动漫,父亲气得动手打了孩子,但让他最为气愤的是,竟有不法分子将此类影碟卖给...