Tài liệu C Sharp Cookbook

Thảo luận trong 'Lập Trình' bắt đầu bởi Thúy Viết Bài, 5/12/13.

  1. Thúy Viết Bài

    Thành viên vàng

    Bài viết:
    198,891
    Được thích:
    167
    Điểm thành tích:
    0
    Xu:
    0Xu
    Dedication
    Copyright
    Preface
    Who This Book Is For
    What You Need to Use This Book
    How This Book Is Organized
    What Was Left Out
    Conventions Used in This Book
    About the Code
    Using Code Examples
    Platform Notes
    Comments and Questions
    Acknowledgments

    Chapter 1. Numbers

    Recipe 1.1. Determining Approximate Equality Between a Fraction and Floating-Point Value
    Recipe 1.2. Converting Degrees to Radians
    Recipe 1.3. Converting Radians to Degrees
    Recipe 1.4. Using the Bitwise Complement Operator with Various Data Types
    Recipe 1.5. Test for an Even or Odd Value
    Recipe 1.6. Obtaining the Most- or Least-Significant Bits of a Number
    Recipe 1.7. Converting a Number in Another Base to Base10
    Recipe 1.8. Determining Whether a String Is a Valid Number
    Recipe 1.9. Rounding a Floating-Point Value
    Recipe 1.10. Different Rounding Algorithms
    Recipe 1.11. Converting Celsius to Fahrenheit
    Recipe 1.12. Converting Fahrenheit to Celsius
    Recipe 1.13. Safely Performing a Narrowing Numeric Cast
    Recipe 1.14. Finding the Length of Any Three Sidesof a Right Triangle
    Recipe 1.15. Finding the Angles of a Right Triangle

    Chapter 2. Strings and Characters
    Recipe 2.1. Determining the Kind of Character
    Recipe 2.2. Determining Whether a Character Is Within a Specified Range
    Recipe 2.3. Controlling Case Sensitivity when Comparing Two Characters
    Recipe 2.4. Finding All Occurrences of a Character Within a String
    Recipe 2.5. Finding the Location of All Occurrencesof a String Within Another String
    Recipe 2.6. The Poor Man's Tokenizer
    Recipe 2.7. Controlling Case Sensitivity when Comparing Two Strings
    Recipe 2.8. Comparing a String to the Beginning or End of a Second String
    Recipe 2.9. Inserting Text into a String
    Recipe 2.10. Removing or Replacing Characters Within a String
    Recipe 2.11. Encoding Binary Data as Base64
    Recipe 2.12. Decoding a Base64-Encoded Binary
    Recipe 2.13. Converting a String Returned as a Byte[ ] Back into a String
    Recipe 2.14. Passing a String to a Method that Accepts Only a Byte[ ]
    Recipe 2.15. Converting Strings to Their Equivalent Value Type
    Recipe 2.16. Formatting Data in Strings
    Recipe 2.17. Creating a Delimited String
    Recipe 2.18. Extracting Items from a Delimited String
    Recipe 2.19. Setting the Maximum Number of Characters a String Can Contain
    Recipe 2.20. Iterating Over Each Character in a String
    Recipe 2.21. Improving String Comparison Performance
    Recipe 2.22. Improving StringBuilder Performance
    Recipe 2.23. Pruning Characters from the Headand/or Tail of a String

    Chapter 3. Classes and Structures
    Recipe 3.1. Creating Union-Type Structures
    Recipe 3.2. Allowing a Type to Represent Itself as a String
    Recipe 3.3. Converting a String Representation of an Object into an Actual Object
    Recipe 3.4. Polymorphism via Concrete or Abstract Base Classes
    Recipe 3.5. Making a Type Sortable
    Recipe 3.6. Making a Type Searchable
    Recipe 3.7. Indirectly Overloading the +=, -=, /=, and *= Operators
    Recipe 3.8. Indirectly Overloading the &&, ||, and ?: Operators
    Recipe 3.9. Improving the Performance of a Structure's Equals Method
    Recipe 3.10. Turning Bits On or Off
    Recipe 3.11. Making Error-Free Expressions
    Recipe 3.12. Minimizing (Reducing) Your Boolean Logic
    Recipe 3.13. Converting Between Simple Types in a Language Agnostic Manner
    Recipe 3.14. Determining Whether to Use theCast Operator, the as Operator, or theis Operator
    Recipe 3.15. Casting with the as Operator
    Recipe 3.16. Determining a Variable's Type with the is Operator
    Recipe 3.17. Polymorphism via Interfaces
    Recipe 3.18. Calling the Same Method on Multiple Object Types
    Recipe 3.19. Adding a Notification Callback Using an Interface
    Recipe 3.20. Using Multiple Entry Points toVersion an Application
    Recipe 3.21. Preventing the Creation of an Only Partially Initialized Object
    Recipe 3.22. Returning Multiple Items from a Method
    Recipe 3.23. Parsing Command-Line Parameters
    Recipe 3.24. Retrofitting a Class to Interoperate with COM
    Recipe 3.25. Initializing a Constant Field at Runtime
    Recipe 3.26. Writing Code that Is Compatible with the Widest Range of Managed Languages
    Recipe 3.27. Implementing Nested foreach Functionality in a Class
    Recipe 3.28. Building Cloneable Classes
    Recipe 3.29. Assuring an Object's Disposal
    Recipe 3.30. Releasing a COM Object ThroughManaged Code
    Recipe 3.31. Creating an Object Cache
    Recipe 3.32. The Single Instance Object
    Recipe 3.33. Choosing a Serializer
    Recipe 3.34. Creating Custom Enumerators
    Recipe 3.35. Rolling Back Object Changes
    Recipe 3.36. Disposing of Unmanaged Resources
    Recipe 3.37. Determining Where Boxing and Unboxing Occur

    Chapter 4. Enumerations
    Recipe 4.1. Displaying an Enumeration Value as a String
    Recipe 4.2. Converting Plain Text to an Equivalent Enumeration Value
    Recipe 4.3. Testing for a Valid Enumeration Value
    Recipe 4.4. Testing for a Valid Enumeration of Flags
    Recipe 4.5. Using Enumerated Members in a Bitmask
    Recipe 4.6. Determining Whether One or More Enumeration Flags Are Set

    Chapter 5. Exception Handling
    Recipe 5.1. Verifying Critical Parameters
    Recipe 5.2. Indicating Where Exceptions Originate
    Recipe 5.3. Choosing when to Throw a Particular Exception
    Recipe 5.4. Handling Derived Exceptions Individually
    Recipe 5.5. Assuring Exceptions are Not Lost when Using Finally Blocks
    Recipe 5.6. Handling Exceptions Thrown from Methods Invoked via Reflection
    Recipe 5.7. Debugging Problems whenLoading an Assembly
    Recipe 5.8. HRESULT-Exception Mapping
    Recipe 5.9. Handling User-Defined HRESULTs
    Recipe 5.10. Preventing Unhandled Exceptions
    Recipe 5.11. Displaying Exception Information
    Recipe 5.12. Getting to the Root of a Problem Quickly
    Recipe 5.13. Creating a New Exception Type
    Recipe 5.14. Obtaining a Stack Trace
    Recipe 5.15. Breaking on a First Chance Exception
    Recipe 5.16. Preventing the Nefarious TypeInitializationException
    Recipe 5.17. Handling Exceptions Thrown from an Asynchronous Delegate

    Chapter 6. Diagnostics
    Recipe 6.1. Controlling Tracing Output inProduction Code
    Recipe 6.2. Providing Fine-Grained Control Over Debugging/Tracing Output
    Recipe 6.3. Creating Your Own Custom Switch Class
    Recipe 6.4. A Custom Trace Class that Outputs Information in an XML Format
    Recipe 6.5. Conditionally Compiling Blocks of Code
    Recipe 6.6. Determining Whether a Process Has Stopped Responding
    Recipe 6.7. Using One or More Event Logs in Your Application
    Recipe 6.8. Changing the Maximum Size of a Custom Event Log
    Recipe 6.9. Searching Event Log Entries
    Recipe 6.10. Watching the Event Log for a Specific Entry
    Recipe 6.11. Finding All Sources Belonging to a Specific Event Log
    Recipe 6.12. Implementing a Simple Performance Counter
    Recipe 6.13. Implementing Performance Counters that Require a Base Counter
    Recipe 6.14. Enable/Disable Complex Tracing Code

    Chapter 7. Delegates and Events
    Recipe 7.1. Controlling when and if a Delegate Fires Within a Multicast Delegate
    Recipe 7.2. Obtaining Return Values from Each Delegate in a Multicast Delegate
    Recipe 7.3. Handling Exceptions Individually for Each Delegate in a Multicast Delegate
    Recipe 7.4. Converting a Synchronous Delegate to an Asynchronous Delegate
    Recipe 7.5. Adding Events to a Sealed Class
    Recipe 7.6. Passing Specialized Parameters to and from an Event
    Recipe 7.7. An Advanced Interface Search Mechanism
    Recipe 7.8. An Advanced Member Search Mechanism
    Recipe 7.9. Observing Additions and Modifications to a Hashtable
    Recipe 7.10. Using the Windows Keyboard Hook
    Recipe 7.11. Using Windows Hooks to Manipulate the Mouse

    Chapter 8. Regular Expressions
    Recipe 8.1. Enumerating Matches
    Recipe 8.2. Extracting Groups from a MatchCollection
    Recipe 8.3. Verifying the Syntax of a Regular Expression
    Recipe 8.4. Quickly Finding Only the Last Match in a String
    Recipe 8.5. Replacing Characters or Words in a String
    Recipe 8.6. Augmenting the Basic String Replacement Function
    Recipe 8.7. A Better Tokenizer
    Recipe 8.8. Compiling Regular Expressions
    Recipe 8.9. Counting Lines of Text
    Recipe 8.10. Returning the Entire Line in Which a Match Is Found
    Recipe 8.11. Finding a Particular Occurrence of a Match
    Recipe 8.12. Using Common Patterns
    Recipe 8.13. Documenting Your Regular Expressions

    Chapter 9. Collections
    Recipe 9.1. Swapping Two Elements in an Array
    Recipe 9.2. Quickly Reversing an Array
    Recipe 9.3. Reversing a Two-Dimensional Array
    Recipe 9.4. Reversing a Jagged Array
    Recipe 9.5. A More Flexible StackTrace Class
    Recipe 9.6. Determining the Number of Times an Item Appears in an ArrayList
    Recipe 9.7. Retrieving All Instances of a Specific Itemin an ArrayList
    Recipe 9.8. Inserting and Removing Items from an Array
    Recipe 9.9. Keeping Your ArrayList Sorted
    Recipe 9.10. Sorting a Hashtable's Keys and/or Values
    Recipe 9.11. Creating a Hashtable with Max and Min Size Boundaries
    Recipe 9.12. Creating a Hashtable with Max and Min Value Boundaries
    Recipe 9.13. Displaying an Array's Data as a Delimited String
    Recipe 9.14. Storing Snapshots of Lists in an Array
    Recipe 9.15. Creating a Strongly Typed Collection
    Recipe 9.16. Persisting a Collection Between Application Sessions

    Chapter 10. Data Structures and Algorithms
    Recipe 10.1. Creating a Hash Code for a Data Type
    Recipe 10.2. Creating a Priority Queue
    Recipe 10.3. Creating a More Versatile Queue
    Recipe 10.4. Determining Where Characters or Strings Do Not Balance
    Recipe 10.5. Creating a One-to-Many Map (MultiMap)
    Recipe 10.6. Creating a Binary Tree
    Recipe 10.7. Creating an n-ary Tree
    Recipe 10.8. Creating a Set Object

    Chapter 11. Filesystem I/O
    Recipe 11.1. Creating, Copying, Moving, and Deleting a File
    Recipe 11.2. Manipulating File Attributes
    Recipe 11.3. Renaming a File
    Recipe 11.4. Determining Whether a File Exists
    Recipe 11.5. Choosing a Method of Opening a File or Stream for Reading and/or Writing
    Recipe 11.6. Randomly Accessing Part of a File
    Recipe 11.7. Outputting a Platform-Independent EOL Character
    Recipe 11.8. Create, Write to, and Read from a File
    Recipe 11.9. Determining Whether a Directory Exists
    Recipe 11.10. Creating, Moving, and Deleting a Directory
    Recipe 11.11. Manipulating Directory Attributes
    Recipe 11.12. Renaming a Directory
    Recipe 11.13. Searching for Directories or FilesUsing Wildcards
    Recipe 11.14. Obtaining the Directory Tree
    Recipe 11.15. Parsing a Path
    Recipe 11.16. Parsing Paths in Environment Variables
    Recipe 11.17. Verifying a Path
    Recipe 11.18. Using a Temporary File in Your Application
    Recipe 11.19. Opening a File Stream with just aFile Handle
    Recipe 11.20. Write to Multiple Output Files at One Time
    Recipe 11.21. Launching and Interacting withConsole Utilities
    Recipe 11.22. Locking Subsections of a File
    Recipe 11.23. Watching the Filesystem for Specific Changes to One or More Files or Directories
    Recipe 11.24. Waiting for an Action to Occurin the Filesystem
    Recipe 11.25. Comparing Version Information of Two Executable Modules

    Chapter 12. Reflection
    Recipe 12.1. Listing Imported Assemblies
    Recipe 12.2. Listing Exported Types
    Recipe 12.3. Finding Overridden Methods
    Recipe 12.4. Finding Members in an Assembly
    Recipe 12.5. Finding Members Within an Interface
    Recipe 12.6. Obtaining Types Nested Within a Type
    Recipe 12.7. Displaying the Inheritance Hierarchy for a Type
    Recipe 12.8. Finding the Subclasses of a Type
    Recipe 12.9. Finding All Serializable Types Within an Assembly
    Recipe 12.10. Controlling Additions to an ArrayList Through Attributes
    Recipe 12.11. Filtering Output when Obtaining Members
    Recipe 12.12. Dynamically Invoking Members

    Chapter 13. Networking
    Recipe 13.1. Converting an IP Address to a Hostname
    Recipe 13.2. Converting a Hostname to an IP Address
    Recipe 13.3. Parsing a URI
    Recipe 13.4. Forming an Absolute URI
    Recipe 13.5. Handling Web Server Errors
    Recipe 13.6. Communicating with a Web Server
    Recipe 13.7. Going Through a Proxy
    Recipe 13.8. Obtaining the HTML from a URL
    Recipe 13.9. Writing a TCP Server
    Recipe 13.10. Writing a TCP Client
    Recipe 13.11. Simulating Form Execution
    Recipe 13.12. Downloading Data from a Server
    Recipe 13.13. Using Named Pipes to Communicate

    Chapter 14. Security
    Recipe 14.1. Controlling Access to Types in aLocal Assembly
    Recipe 14.2. Encrypting/Decrypting a String
    Recipe 14.3. Encrypting and Decrypting a File
    Recipe 14.4. Cleaning Up Cryptography Information
    Recipe 14.5. Verifying that a String Is Uncorrupted During Transmission
    Recipe 14.6. Wrapping a String Hash for Ease of Use
    Recipe 14.7. A Better Random Number Generator
    Recipe 14.8. Securely Storing Data
    Recipe 14.9. Making a Security Assert Safe
    Recipe 14.10. Preventing Malicious Modifications to an Assembly
    Recipe 14.11. Verifying that an Assembly Has Been Granted Specific Permissions
    Recipe 14.12. Minimizing the Attack Surface of an Assembly

    Chapter 15. Threading
    Recipe 15.1. Creating Per-Thread Static Fields
    Recipe 15.2. Providing Thread Safe Access to Class Members
    Recipe 15.3. Preventing Silent Thread Termination
    Recipe 15.4. Polling an Asynchronous Delegate
    Recipe 15.5. Timing Out an Asynchronous Delegate
    Recipe 15.6. Being Notified of the Completionof an Asynchronous Delegate
    Recipe 15.7. Waiting for Worker Thread Completion
    Recipe 15.8. Synchronizing the Reading and Writingof a Resource Efficiently
    Recipe 15.9. Determining Whether a Requestfor a Pooled Thread Will Be Queued
    Recipe 15.10. Waiting for All Threads in theThread Pool to Finish
    Recipe 15.11. Configuring a Timer
    Recipe 15.12. Storing Thread-Specific Data Privately

    Chapter 16. Unsafe Code
    Recipe 16.1. Controlling Changes to Pointers Passedto Methods
    Recipe 16.2. Comparing Pointers
    Recipe 16.3. Navigating Arrays
    Recipe 16.4. Manipulating a Pointer to a Fixed Array
    Recipe 16.5. Returning a Pointer to a Particular Element in an Array
    Recipe 16.6. Creating and Using an Array of Pointers
    Recipe 16.7. Creating and Using an Array of Pointersto Unknown Types
    Recipe 16.8. Switching Unknown Pointer Types
    Recipe 16.9. Breaking Up Larger Numbers into Their Equivalent Byte Array Representation
    Recipe 16.10. Converting Pointers to a Byte[ ], SByte[ ],or Char[ ] to a String

    Chapter 17. XML
    Recipe 17.1. Reading and Accessing XML Datain Document Order
    Recipe 17.2. Reading XML on the Web
    Recipe 17.3. Querying the Contents of an XML Document
    Recipe 17.4. Validating XML
    Recipe 17.5. Creating an XML Document Programmatically
    Recipe 17.6. Detecting Changes to an XML Document
    Recipe 17.7. Handling Invalid Characters in anXML String
    Recipe 17.8. Transforming XML to HTML
    Recipe 17.9. Tearing Apart an XML Document
    Recipe 17.10. Putting Together an XML Document

    Colophon
    Index
     

    Các file đính kèm:

Đang tải...