作者簡介
作者:(美國)瑞奇特(Jeffrey Richter)
Jeffrey Richter是Winteltect的共同創辦人之一,這是一家培訓、諮詢和調試相關的企業,專門致力於幫助其他公司更快構建更好的軟體。他於1999年10月開始為微軟的.NET框架團隊提供諮詢,並已促成了微軟的數款產品。除了本書之前的版本,他還寫過一些其他流行的主題,包括《Windows via C/C++》和《Advanced Windows》。
內容簡介
從《框架設計(第3版)(影印版)》理解以下內容:建立、部署基於版本的應用程式、組件和共享程式集,在理解原語、數值和引用類型行為的基礎上來定義並更高效地使用它們。使用泛型和接口定義可重用算法,有效地使用特殊的CLR類型——委託、枚舉、自定義屬性、數組、字元串。
理解垃圾收集器如何管理資源
使用執行緒池、任務、取消模式、定時器和異步I/O操作來設計靈活、可靠、可擴展的解決方案,
使用異常處理以協助狀態管理
使用CLR託管、AppDomain、程式集載入、反射和C#動態
類型來構建動態可擴展的應用程式
作品目錄
Foreward
Introduction
Part l CLR Basics
1 The CLR's Execution Model
Compiling Source Code into Managed Modules
Combining Managed Modules into Assemblies
Loading the Common Language Runtime
Executing Your Assembly's Code
IL and Verification
Unsafe Code
The Native Code Generator Tool: NGen.exe
The Framework Class Library
The Common Type System
The Common Language Specification
Interoperability with Unmanaged Code
2 Building, Packaging, Deploying, and Administering Applications and Types
.NET Framework Deployment Goals
Building Types into a Module
Response Files
A Brief Look at Metadata
Combining Modules to Form an Assembly
Adding Assemblies to a Project by Using the Visual Studio IDE
Using the Assembly Linker
Adding Resource Files to an Assembly
Assembly Version Resource Information
Version Numbers
Culture
Simple Application Deployment (Privately Deployed Assemblies)
Simple Administrative Control (Configuration)
3 Shared Assemblies and Strongly Named Assemblies
Two Kinds of Assemblies, Two Kinds of Deployment
Giving an Assembly a Strong Name
The Global Assembly Cache
Building an Assembly That References a Strongly Named Assembly
Strongly Named Assemblies Are Tamper-Resistant
Delayed Signing
Privately Deploying Strongly Named Assemblies
How the Runtime Resolves Type References
Advanced Administrative Control (Configuration)
Publisher Policy Control
Part II Designing Types
4 Type Fundamentals
All Types Are Derived from System.Object
Casting Between Types
Casting with the C# s and as Operators
Namespaces and Assemblies
How Things Relate at Runtime
5 Primitive, Reference, and Value Types
Programming Language Primitive Types
Checked and Unchecked Primitive Type Operations
Reference Types and Value Types
Boxing and Unboxing Value Types
Changing Fields in a Boxed Value Type by Using Interfaces (and Why You Shouldn't Do This)
Object Equality and Identity
Object Hash Codes
The dynamic Primitive Type
6 Type and Member Basics
The Different Kinds of Type Members
Type Visibility
Friend Assemblies
Member Accessibility
Static Classes
Partial Classes, Structures, and Interfaces
Components, Polymorphism, and Versioning
How the CLR Calls Virtual Methods, Properties, and Events
Using Type Visibility and Member Accessibility Intelligently
Dealing with Virtual Methods When Versioning Types
7 Constants and Fields
Constants
Fields
8 Methods
Instance Constructors and Classes (Reference Types)
Instance Constructors and Structures (Value Types)
Type Constructors
Type Constructor Performance
Operator Overload Methods
Operators and Programming Language Interoperability
Conversion Operator Methods
Extension Methods
Rules and Guidelines
Extending Various Types with Extension Methods
The Extension Attribute
Partial Methods
Rules and Guidelines
9 Parameters
Optional and Named Parameters
Rules and Guidelines
The Defaul tParameterVal ue and Optional Attributes
Implicitly Typed Local Variables
Passing Parameters by Reference to a Method
Passing a Variable Number of Arguments to a Method
Parameter and Return Type Guidelines
Const-ness
10 Properties .
Parameterless Properties
Automatically Implemented Properties
Defining Properties Intelligently
Object and Collection Initializers
Anonymous Types
The System, Tuple Type
Parameterful Properties
The Performance of Calling Property Accessor Methods
Property Accessor Accessibility
Generic Property Accessor Methods
11 Events
Designing a Type That Exposes an Event
Step #1: Define a type that will hold any additional information
that should be sent to receivers of the event notification
Step #2: Define the event member
Step #3: Define a method responsible for raising the event to
notify registered obJects that the event has occurred
Step #4: Define a method that translates the input into the desired event.
How the Compiler Implements an Event
Designing a Type That Listens for an Event
Explicitly Implementing an Event
12 Generics
Generics in the Framework Class Library
Wintellect's Power Collections Library
Generics Infrastructure
Open and Closed Types
Generic Types and Inheritance
Generic Type Identity
Code Explosion
Generic Interfaces
Generic Delegates
Delegate and Interface Contravariant and Covariant Generic Type Arguments.
Generic Methods
Generic Methods and Type Inference
Generics and Other Members
Verifiability and Constraints
Primary Constraints
Secondary Constraints
Constructor Constraints
Other Verifiability Issues
13 Interfaces
Class and Interface Inheritance
Defining an Interface
Inheriting an Interface
More About Calling Interface Methods...
Implicit and Explicit Interface Method Implementations (What's Happening Behind the Scenes)
Generic Interfaces
Generics and Interface Constraints
Implementing Multiple Interfaces That Have the Same Method Name and Signature
Improving Compile-Time Type Safety with Explicit Interface Method Implementations
Be Careful with Explicit Interface Method Implementations
Design: Base Class or Interface?
Part III Essential Types
14 Chars, Strings, and Working with Text
Characters
The System, String Type
Constructing Strings
Strings Are Immutable
Comparing Strings
……