1.1 将源代码编译成托管模块 公共语言运行时(Common Language Runtime,CLR)是一个可由多种编程语言使用的“运行时”。CLR的核心功能(比如内存管理、程序集加载、安全性、异常处理和线程同步)可由面向CLR的所有语言使用。 可用支持CLR的任何语言创建源代码文件,然后用对应的编译器检查语法和分析源代码。无论选择哪个编译器,结…
本章重点解释如何生成仅供自己的应用程序使用的程序集。 2.2 将类型生成到模块中 本节讨论如何将包含多个类型的源代码文件转变为可以部署的文件。先看下面这个简单的应用程序。 public sealed class Program { public static void Main() { System.Console.WriteLine("Hi");…
第 2 章讲述了生成、打包和部署程序集的步骤。我将重点放在所谓的私有部署(private deployment)上。进行私有部署,程序集放在应用程序的基目录(或子目录),由这个应用程序独享。以私有方式部署程序集,可以对程序集的命名、版本和行为进行最全面的控制。 本章重点是如何创建可由多个应用程序共享的程序集。 Microsoft .NET Fram…
4.1 所有类型都从 System.Object 派生 “运行时”要求每个类型最终都从 System.Object 类型派生。也就是说,以下两个类型定义完全一致: // 隐式派生自 Object class Emplpyee { … } // 显示派生自 Object class Emplpyee : System.Object { … } 由于所…
5.1 编程语言的基元类型 某些数据类型如此常用,以至于许多编译器允许代码以简化语法来操纵它们。例如,可用以下语法分配一个整数: System.Int32 a = new System.Int32(); 但你肯定不愿意用这种语法声明并初始化整数,它实在是太繁琐了。幸好,包括 C# 在内的许多编译器都允许换用如下所示的语法: int a = 0; 这…
6.1 类型的各种成员 类型中可定义 0 个或多个以下种类的成员。 ●常量 常量是指出数据值恒定不变的符号。这种符号使代码更易阅读和维护。常量总与类型关联,不于类型的实例关联。常量逻辑上总是静态成员。相关内容在第 7 章“常量和字段”讨论。●字段 字段表示只读或可读的数据值。字段可以是静态的;这种字段被认为是类型状态的一部分。字段也可以是实例(非静…
7.1 常量 常量是值从不变化的符号。定义常量符号时,它的值必须能在编译时确定。确定后,编译器将常量值保存到程序集元数据中。这意味着只能定义编译器识别的基元类型的常量。在 C# 中,以下类型是基元类型,可用于定义常量:Boolean,Char,Byte,SByte,Int16,UInt16,Int32,Uint32,Int64,UInt64,Sin…
这篇文章没有摘要
这篇文章没有摘要
这篇文章没有摘要
这篇文章没有摘要
这篇文章没有摘要
对于多继承(multiple inheritance)的概念,许多程序员并不陌生,它是指一个类从两个或多个基类派生的能力。例如,假定 TransmitData类的作用是发送数据,ReceiveData类的作用是接收数据。现在要创建SocketPort类,作用是发送和接收数据。在这种情况下,你会希望SocketPort从TransmitData和Re…
这篇文章没有摘要
这篇文章没有摘要
这篇文章没有摘要
这篇文章没有摘要
这篇文章没有摘要
这篇文章没有摘要
这篇文章没有摘要
这篇文章没有摘要
这篇文章没有摘要
这篇文章没有摘要
这篇文章没有摘要
这篇文章没有摘要
这篇文章没有摘要
这篇文章没有摘要
这篇文章没有摘要
这篇文章没有摘要
这篇文章没有摘要
简写 CLR:Common Language Runtime。公共语言运行时DEP:Data Execution Prevention。Windows的数据执行保护ASLR:Address Space Layout Randomization。地址空间布局随机化COFF:Common Object File Format。标准Windows PE文…