Home Page Icon
Home Page
Table of Contents for
III. More C# Language
Close
III. More C# Language
by Donis Marshall
Programming Microsoft® Visual C#® 2008: The Language
Programming Microsoft Visual C# 2008: The Language
SPECIAL OFFER: Upgrade this ebook with O’Reilly
Praise for Programming Microsoft Visual C# 2005: The Language (Microsoft Press)
Acknowledgments
1. Introduction
Who Is This Book For?
Organization of This Book
System Requirements
Technology Updates
Find Additional Content Online
The Companion Web Site
Support for This Book
I. Core Language
1. Introduction to Microsoft Visual C# Programming
A Demonstration of Visual C# 2008
Sample C# Program
Sample LINQ Program
Common Elements in Visual C# 2008
Namespaces
Main Entry Point
Local Variables
Nullable Types
Expressions
Selection Statements
Iterative Statements
C# Core Language Features
Symbols and Tokens
White Space
Tabs
Punctuators
Semicolon punctuator
Dot punctuator
Colon punctuator
Comma punctuator
Line Terminators
Comments
Single-line comments: //
Delimited comments: /* and */
Single-line documentation comments: ///
Multi-line documentation tags
Preprocessor Directives
Declarative preprocessor directives
Conditional preprocessor directives
Diagnostic directives
Pragma directives
Region directives
Line directives
Blocks
Generic types
Characters
Numeric Suffixes
Escape Characters
Verbatim Characters
Operators
Unary operators
Binary operators
Compound operators
Boolean operators
Ternary operators
Type operators
Pointer operators
Miscellaneous operators
Identifiers
Keywords
Primitives
Types
2. Types
Classes
Class Members
Member Accessibility
Member Attributes
Member Modifiers
Instance and Static Members
Static class
this Object
Data and Function Members
Constants
Fields
Member Functions
Functions
Function Return
Function parameters
Function Overloading
Local Variables
Visibility
Methods
Constructors
Singleton
Object initializers
Destructors
Properties
Read-only and write-only properties
Automatically implemented properties
Error handling
Nested Types
Partial Type
Partial Method
Structures
Enumeration
Bitwise Enumeration
Equivalence versus Identity
Class Refinement
3. Inheritance
Inheritance Example
Cross-Language Inheritance
System.Object
Object.Equals Method
Object.GetHashCode Method
Object.GetType Method
Object.ToString Method
Object.MemberwiseClone Method
Object.ReferenceEquals Method
Employee Class
Implementing Inheritance
Accessibility
Overriding Inherited Behavior
Virtual and Override Keywords
Overload versus Override
Overriding Events
Extension Method
The new Modifier
Abstract Classes
Sealed Classes
Constructors and Destructors
Interfaces
Implementing Interfaces
Explicit Interface Member Implementation
Reimplementation of Interfaces
Polymorphism
Interface Polymorphism
The new Modifier and Polymorphism
Casting
Type Operators
Attribute Inheritance
Visual Studio 2008
II. Core Skills
4. Introduction to Visual Studio 2008
Migrating to Visual Studio 2008
Integrated Development Environment
Start Page
Creating Projects
Multiple-Targeting
Solution Explorer
Project Types
Adding References
Managing Windows in Visual Studio
AutoRecover
Class Hierarchies
Class View Window
Object Browser
Class Diagram
Class Details
Class Diagram Toolbox
Inheritance
Association
A Class Diagram Example
Error List Window
Code Editor
IntelliSense
Surround With
Font and Color Formatting
Source Code Formatting
Change Tracking
Code Snippets
Insert a Code Snippet
Default Snippets
Code Snippets Manager
Creating Snippets
CodeSnippets and CodeSnippet Elements
Header Element
Snippet, References, and Imports Elements
Declarations, Literal, and Object Elements
Code and <![CDATA ]> Elements
String Builder Code Snippet
Code Snippet Creation Example
Copy and Paste
Refactoring
Refactoring Example
Building and Deployment
MSBuild
Items
Properties
Tasks
Project File
MSBuild Example
ClickOnce Deployment
Publish a ClickOnce Application
Arrays and Collections
5. Arrays and Collections
Arrays
Array Elements
Multidimensional Arrays
Jagged Arrays
System.Array
Array.AsReadOnly Method
Array.Clone Method
Array.CreateInstance Method
System.Array and Predicates
Array.Resize Method
System.Array Properties
Array.SyncRoot Property
Comparable Elements
ICollection Interface
ICloneable Interface
IEnumerable
IList Interface
Indexers
params Keyword
Array Conversion
Arrays as Function Returns and Parameters
Collections
ArrayList Collection
BitArray Collection
Hashtable Collection
Queue Collection
SortedList
Stack Collection
Specialized Collections
LINQ
6. Introduction to LINQ
C# Extensions
Type Inference
Object Initializers
Anonymous Types
Extension Methods
Lambda Expression
Expression Trees
LINQ Essentials
Core Elements
Conversion Operators
LINQ Query Expression Syntax
Where Is LINQ?
Namespaces
LINQ to Objects
Examples of LINQ to Objects
Declarative versus Imperative
LINQ to Objects Reduces Complexity
LINQ to Objects and Cross-Domain Access
LINQ Operators
Aggregation Operators
Concatenation Operator
Data Type Conversion Operators
Element Operators
Equality Operator
Filtering Operator
Generation Operators
Grouping Operator
Join Operators
Partitioning Operators
Quantifier Operators
Set Operators
Sorting Operators
Generics
7. Generics
Generic Types
Type Parameters
Type Arguments
Constructed Types
Overloaded Methods
Generic Methods
The this Reference for Generic Types
Constraints
Derivation Constraints
Interface Constraints
Value Type Constraints
Reference Type Constraints
Default Constructor Constraints
Casting
Inheritance
Overriding Generic Methods
Nested Types
Static Members
Operator Functions
Serialization
Generics Internals
Generic Collections
Enumerators
8. Enumerators
Enumerable Objects
Enumerators
Enumerator states
An Enumerator Example
An Enumerator Example (Versioned Collection)
IEnumerator Problem
Generic Enumerators
IEnumerable<T> Interface
IEnumerator<T> Interface
A Generic Enumerator Example (Versioned Collection)
Iterators
Yield Statement
Iterator Blocks
Iterator Internals
Iterator Examples
Dual iteration
Reverse iteration
Temporary collections
Complex iteration
Operator Overloading
III. More C# Language
9. Operator Overloading
Mathematical and Logical Operators
Implementation
Increment and Decrement Operators
LeftShift and RightShift Operators
Operator True and Operator False
Paired Operators
Operator== and Operator!=
Operator| and Operator&
Operator|| and Operator&&
Conversion Operators
The Operator String Operator
A Practical Example
Operator Overloading Internals
Delegates and Events
10. Delegates and Events
Delegates
Defining a Delegate
Creating a Delegate
Contravariance and Covariance
Invoking a Delegate
Arrays of Delegates
System.MulticastDelegate Class
Combining delegates
Removing delegates
Invocation List
Methods and properties
Generics and Delegates
Asynchronous Invocation
BeginInvoke Method
EndInvoke Method
Asynchronous Delegate Diagram
Delegate Internals
Exceptions
Anonymous Methods
Outer Variables
Generic Anonymous Methods
Limitations of Anonymous Methods
Events
Publishing an Event
Subscribers
Raising an Event
EventArgs
LINQ Programming
11. LINQ Programming
LINQ to XML
XML Schemas
Validation
Navigation
Explicit Casting
XML Modification
XML Query Expressions
LINQ to SQL
Entity Classes
LINQ to SQL Query Expression
LINQ to DataSet
Associations
LINQ to SQL Updates
Exception Handling
12. Exception Handling
An Exception Example
A Standard Exception Model
Structured Exception Handling
Try Statements
Catch Statements
Propagating Exceptions
Finally Statements
Exception Information Table
Nested Try Blocks
System.Exception
System.Exception Functions
System.Exception Properties
Application Exceptions
Exception Translation
COM Interoperability Exceptions
COM Exceptions
Generating COM Exceptions
Remote Exceptions
Unhandled Exceptions
Application.ThreadException
AppDomain.UnhandledException
Managing Exceptions in Visual Studio
The Exception Assistant
The Exceptions Dialog Box
Metadata and Reflection
IV. Debugging
13. Metadata and Reflection
Metadata
Metadata Tokens
Metadata Heaps
Streams
Metadata Validation
ILDASM
Reflection
Obtaining a Type Object
Loading Assemblies
Browsing Type Information
Dynamic Invocation
Binders
Type Creation
Late Binding Delegates
Function Call Performance
Reflection and Generics
IsGeneric and IsGenericTypeDefinition
typeof
GetType
GetGenericTypeDefinition
GetGenericArguments
Creating Generic Types
Reflection Security
Attributes
Predefined Custom Attributes
Pseudo-custom Attributes
Combining Attributes
Anatomy of an Attribute
Programmer-Defined Custom Attributes
Attributes and Reflection
MSIL
14. MSIL Programming
"Hello World" Application
Evaluation Stack
MSIL in Depth
Directives
Assembly Directives
.assembly
.assembly extern
.file
.subsystem
.corflags
.stackreserve
.imagebase
Class Directives
.class header {members}
.custom constructorsignature
.method
.field
.property
.event
Method Directives
.locals
.maxstack
.entrypoint
Method Directive Example
MSIL Instructions
Short Form
Load and Store Methods
Complex Tasks
Managing Types
Boxing
Inheritance
Interfaces
Structures
Branching
Calling Methods
call
callvirt
calli
jmp
tail
Arrays
Arithmetic Instructions
Conversion Operations
Exception Handling
Miscellaneous Operations
Process Execution
Roundtripping
Debugging with Visual Studio 2008
15. Debugging with Visual Studio 2008
Debugging Overview
Debugging Windows Forms Projects
Attaching to a Running Process
Debugging Console Application Projects
Debugging Class Library Projects
Debug Setup
Debug and Release Configurations
Configuration Manager
Debug Settings
Visual Studio Environment Debug Settings
General Options
Edit And Continue Options
Just-In-Time Options
Native Options
Symbols Options
Debug Settings for a Solution
Debug Settings for a Project
Breakpoints
Function Breakpoints
Breakpoints Window
Location
Condition
Hit Count
Filter
When Hit Command
Trace Points
Breakpoint Symbols
Code Stepping
Step Commands
Example of Setting The Next Statement
Debug Toolbar
Data Tips
Visualizers
Debug Windows
Breakpoints Window
Output Window
Watch Window and Other Variables Windows
Expressions
Expression example
Autos Window
Locals Window
Immediate Window
Call Stack Window
Threads Window
Modules Window
Processes Window
Memory Window
Disassembly Window
Registers Window
Tracing
Tracing Example
Configuration File
The sources Element
The listeners Element
The sharedListeners Element
The switches Element
Tracing Example with a Configuration File
DebuggerDisplayAttribute
DebuggerBrowsableAttribute
DebuggerTypeProxyAttribute
Dump Files
Advanced Debugging
16. Advanced Debugging
DebuggableAttribute Attribute
Debuggers
Managed Debugger (MDbg)
MDbg Example
MDbg Commands
WinDbg
Basic WinDbg Commands
Stack Trace Commands
Display Memory Commands
Breakpoint Memory Commands
Step Commands
WinDbg Directives
Son of Strike (SOS)
SOS Example, Part I
SOS Commands
SOS Example, Part II
Dumps
ADPlus
An ADPlus Example
Memory Management
Object graph
Memory Example
Generations
Generations Example
Finalization
Reliability and Performance Monitor
Threads
Threads Commands
Threads Example
Threads Example #2
Exceptions
Exception Example
Symbols
Symsrv Symbol Server
Application Symbols
WinDbg
Memory Management
V. Advanced Features
17. Memory Management
Unmanaged Resources
Garbage Collection Overview
GC Flavors
Workstation GC with Concurrent Garbage Collection
Workstation GC Without Concurrent Garbage Collection
Server GC
Configuring GC Flavor
Finalizers
Finalizer Thread
Finalizer Considerations
High expense of finalizers
Lack of guarantee
Multithreading
One finalizer thread
Finalizers and virtual functions
Unpredictable order of finalization
Resurrection
Finalizers and reentrancy
Deep object graphs
Finalizer race conditions
Constructors
The Console class and finalization
IDisposable.Dispose
TLS Example
Disposable Pattern
Disposable Pattern Considerations
Redundant Dispose Method
Close Method
Thread-Safe Dispose Method
Reusable Objects
Disposing Inner Objects
Weak Reference
Weak Reference Internals
WeakReference Class
Reliable Code
Constrained Execution Region
Critical Finalizer Class
Safe Handles
Managing Unmanaged Resources
Memory Pressure
Handles
The GC Class
Unsafe Code
18. Unsafe Code
Unsafe Keyword
Pointers
Pointer Parameters and Pointer Return Values
Fixed Statements
The stackalloc Command
P/Invoke
Interop Marshaler
DllImport
EntryPoint
CallingConvention
ExactSpelling
PreserveSig
SetLastError
CharSet
BestFitMapping
ThrowOnUnmappableChar
Blittable Types
Formatted Type
Directional Attributes
StringBuilder
Unmanaged Callbacks
Explicit Marshaling
Fixed-Size Buffers
Summary
A. About the Author
B. Additional Resources for Developers from Microsoft Press
Visual Basic
Visual C#
Web Development
Data Access
.NET Framework
Other Developer Topics
C. More Great Developer Resources
Developer Step by Step
Developer Reference
Focused Topics
Index
SPECIAL OFFER: Upgrade this ebook with O’Reilly
Search in book...
Toggle Font Controls
Playlists
Add To
Create new playlist
Name your new playlist
Playlist description (optional)
Cancel
Create playlist
Sign In
Email address
Password
Forgot Password?
Create account
Login
or
Continue with Facebook
Continue with Google
Sign Up
Full Name
Email address
Confirm Email Address
Password
Login
Create account
or
Continue with Facebook
Continue with Google
Prev
Previous Chapter
Operator Overloading
Next
Next Chapter
9. Operator Overloading
Part III. More C# Language
Add Highlight
No Comment
..................Content has been hidden....................
You can't read the all page of ebook, please click
here
login for view all page.
Day Mode
Cloud Mode
Night Mode
Reset