C# 4.0 How-To [NOOK Book]


Real Solutions for C# 4.0 Programmers

Need fast, robust, efficient code solutions for Microsoft C# 4.0? This book delivers exactly what you?re looking for. You?ll find more than 200 solutions, best-practice techniques, and tested code samples for everything from classes to exceptions, networking to XML, LINQ to Silverlight. Completely up-to-date, this book fully reflects major language enhancements introduced with the new C# 4.0 and .NET 4.0. When time is of the essence, turn ...

See more details below
C# 4.0 How-To

Available on NOOK devices and apps  
  • NOOK Devices
  • Samsung Galaxy Tab 4 NOOK 7.0
  • Samsung Galaxy Tab 4 NOOK 10.1
  • NOOK HD Tablet
  • NOOK HD+ Tablet
  • NOOK eReaders
  • NOOK Color
  • NOOK Tablet
  • Tablet/Phone
  • NOOK for Windows 8 Tablet
  • NOOK for iOS
  • NOOK for Android
  • NOOK Kids for iPad
  • PC/Mac
  • NOOK for Windows 8
  • NOOK for PC
  • NOOK for Mac

Want a NOOK? Explore Now

NOOK Book (eBook)
BN.com price
(Save 43%)$31.99 List Price


Real Solutions for C# 4.0 Programmers

Need fast, robust, efficient code solutions for Microsoft C# 4.0? This book delivers exactly what you’re looking for. You’ll find more than 200 solutions, best-practice techniques, and tested code samples for everything from classes to exceptions, networking to XML, LINQ to Silverlight. Completely up-to-date, this book fully reflects major language enhancements introduced with the new C# 4.0 and .NET 4.0. When time is of the essence, turn here first: Get answers you can trust and code you can use, right now!

Beginning with the language essentials and moving on to solving common problems using the .NET Framework, C# 4.0 How-To addresses a wide range of general programming problems and algorithms. Along the way is clear, concise coverage of a broad spectrum of C# techniques that will help developers of all levels become more proficient with C# and the most popular .NET tools.

Fast, Reliable, and Easy to Use!

  • Write more elegant, efficient, and reusable code
  • Take advantage of real-world tips and best-practices advice
  • Create more effective classes, interfaces, and types
  • Master powerful data handling techniques using collections, serialization, databases, and XML
  • Implement more effective user interfaces with both WPF and WinForms
  • Construct Web-based and media-rich applications with ASP.NET and Silverlight
  • Make the most of delegates, events, and anonymous methods
  • Leverage advanced C# features ranging from reflection to asynchronous programming
  • Harness the power of regular expressions
  • Interact effectively with Windows and underlying hardware
  • Master the best reusable patterns for designing complex programs
Read More Show Less

Product Details

  • ISBN-13: 9780672331961
  • Publisher: Pearson Education
  • Publication date: 3/15/2010
  • Series: How-To
  • Sold by: Barnes & Noble
  • Format: eBook
  • Edition number: 1
  • Pages: 672
  • Sales rank: 781,447
  • File size: 42 MB
  • Note: This product may take a few minutes to download.

Meet the Author

Ben Watson, a software engineer on Microsoft’s Bing team, helps design and implement massively scalable distributed systems and other internals for the Bing search engine. Before joining Microsoft he served as a lead developer for GeoEye, a top provider of satellite imagery. He blogs at PhilosophicalGeek.com, where he has presented many popular coding tutorials in C# and C++.

Read More Show Less

Table of Contents

Introduction 1

Overview of C# 4.0 How-To 1

How-To Benefit from This Book 1

How-To Continue Expanding Your Knowledge 3


Chapter 1 Type Fundamentals 7

Create a Class 8

Define Fields, Properties, and Methods 9

Define Static Members 10

Add a Constructor 11

Initialize Properties at Construction 12

Use const and readonly 13

Reuse Code in Multiple Constructors 14

Derive from a Class 14

Call a Base Class Constructor 15

Override a Base Class’s Method or Property 16

Create an Interface 19

Implement Interfaces 19

Create a Struct 21

Create an Anonymous Type 22

Prevent Instantiation with an Abstract Base Class 23

Interface or Abstract Base Class? 24

Chapter 2 Creating Versatile Types 27

Format a Type with ToString() 28

Make Types Equatable. 32

Make Types Hashable with GetHashCode() 34

Make Types Sortable 34

Give Types an Index 36

Notify Clients when Changes Happen 38

Overload Appropriate Operators 39

Convert One Type to Another 40

Prevent Inheritance 41

Allow Value Type to Be Null 42

Chapter 3 General Coding 45

Declare Variables 46

Defer Type Checking to Runtime (Dynamic Types) 47

Use Dynamic Typing to Simplify COM Interop 49

Declare Arrays 50

Create Multidimensional Arrays 50

Alias a Namespace 51

Use the Conditional Operator (?:) 52

Use the Null-Coalescing Operator (??) 53

Add Methods to Existing Types with Extension Methods 54

Call Methods with Default Parameters 55

Call Methods with Named Parameters 56

Defer Evaluation of a Value Until Referenced 57

Enforce Code Contracts 58

Chapter 4 Exceptions 63

Throw an Exception 64

Catch an Exception 64

Catch Multiple Exceptions 65

Rethrow an Exception 66

(Almost) Guarantee Execution with finally 67

Get Useful Information from an Exception 68

Create Your Own Exception Class 70

Catch Unhandled Exceptions 72

Usage Guidelines 76

Chapter 5 Numbers 77

Decide Between Float, Double, and Decimal 78

Use Enormous Integers (BigInteger) 79

Use Complex Numbers 80

Format Numbers in a String 82

Convert a String to a Number 86

Convert Between Number Bases 87

Convert a Number to Bytes (and Vice Versa) 89

Determine if an Integer Is Even 91

Determine if an Integer Is a Power of 2 (aka, A Single Bit Is Set) 91

Determine if a Number Is Prime 91

Count the Number of 1 Bits 92

Convert Degrees and Radians 93

Round Numbers 93

Generate Better Random Numbers 96

Generate Unique IDs (GUIDs) 97

Chapter 6 Enumerations 99

Declare an Enumeration 100

Declare Flags as an Enumeration 101

Determine if a Flag Is Set 102

Convert an Enumeration to an Integer (and Vice Versa) 102

Determine if an Enumeration Is Valid 103

List Enumeration Values 103

Convert a String to an Enumeration 103

Attach Metadata to Enums with Extension Methods 104

Enumeration Tips 106

Chapter 7 Strings 109

Convert a String to Bytes (and Vice Versa) 110

Create a Custom Encoding Scheme 111

Compare Strings Correctly 115

Change Case Correctly 116

Detect Empty Strings 117

Concatenate Strings: Should You Use StringBuilder? 117

Concatenate Collection Items into a String 119

Append a Newline Character 120

Split a String 121

Convert Binary Data to a String (Base-64 Encoding) 122

Reverse Words 124

Sort Number Strings Naturally 125

Chapter 8 Regular Expressions 131

Search Text 132

Extract Groups of Text 132

Replace Text 133

Match and Validate 134

Help Regular Expressions Perform Better 137

Chapter 9 Generics 139

Create a Generic List 140

Create a Generic Method 141

Create a Generic Interface 142

Create a Generic Class 143

Create a Generic Delegate 145

Use Multiple Generic Types. 146

Constrain the Generic Type 146

Convert IEnumerable<string> to IEnumerable<object> (Covariance) 149

Convert IComparer<Child> to IComparer<Parent> (Contravariance) 150

Create Tuples (Pairs and More) 151


Chapter 10 Collections 155

Pick the Correct Collection Class 156

Initialize a Collection 157

Iterate over a Collection Independently of Its Implementation 158

Create a Custom Collection 159

Create Custom Iterators for a Collection 163

Reverse an Array 166

Reverse a Linked List 167

Get the Unique Elements from a Collection 168

Count the Number of Times an Item Appears 168

Implement a Priority Queue 169

Create a Trie (Prefix Tree) 173

Chapter 11 Files and Serialization 177

Create, Read, and Write Files 178

Delete a File 180

Combine Streams (Compress a File) 181

Get a File Size 183

Get File Security Description 183

Check for File and Directory Existence 185

Enumerate Drives 185

Enumerate Directories and Files 186

Browse for Directories 187

Search for a File or Directory 188

Manipulate File Paths 190

Create Unique or Temporary Filenames 192

Watch for File System Changes 192

Get the Paths to My Documents, My Pictures, Etc. 194

Serialize Objects 194

Serialize to an In-Memory Stream 198

Store Data when Your App Has Restricted Permissions 198

Chapter 12 Networking and the Web 201

Resolve a Hostname to an IP Address 202

Get This Machine’s Hostname and IP Address 202

Ping a Machine 203

Get Network Card Information 204

Create a TCP/IP Client and Server 204

Send an Email via SMTP 208

Download Web Content via HTTP 209

Upload a File with FTP 213

Strip HTML of Tags 214

Embed a Web Browser in Your Application 214

Consume an RSS Feed 216

Produce an RSS Feed Dynamically in IIS 220

Communicate Between Processes on the Same Machine (WCF) 222

Communicate Between Two Machines on the Same Network (WCF) 229

Communicate over the Internet (WCF) 231

Discover Services During Runtime (WCF) 233

Chapter 13 Databases 237

Create a New Database from Visual Studio 238

Connect and Retrieve Data 240

Insert Data into a Database Table 245

Delete Data from a Table 246

Run a Stored Procedure 247

Use Transactions 248

Bind Data to a Control Using a DataSet 250

Detect if Database Connection Is Available 258

Automatically Map Data to Objects with the Entity Framework 259

Chapter 14 XML 261

Serialize an Object to and from XML 262

Write XML from Scratch 266

Read an XML File 268

Validate an XML Document 270

Query XML Using XPath 271

Transform Database Data to XML 273

Transform XML to HTML 274


Chapter 15 Delegates, Events, and Anonymous Methods 279

Decide Which Method to Call at Runtime 280

Subscribe to an Event 282

Publish an Event 283

Ensure UI Updates Occur on UI Thread 285

Assign an Anonymous Method to a Delegate 288

Use Anonymous Methods as Quick-and-Easy Event Handlers 288

Take Advantage of Contravariance 291

Chapter 16 Windows Forms 295

Create Modal and Modeless Forms 296

Add a Menu Bar 297

Disable Menu Items Dynamically 300

Add a Status Bar 300

Add a Toolbar 301

Create a Split Window Interface 302

Inherit a Form 304

Create a User Control 308

Use a Timer 313

Use Application and User Configuration Values 314

Use ListView Efficiently in Virtual Mode 317

Take Advantage of Horizontal Wheel Tilt 319

Cut and Paste 323

Automatically Ensure You Reset the Wait Cursor 327

Chapter 17 Graphics with Windows Forms and GDI+ 329

Understand Colors 330

Use the System Color Picker 330

Convert Colors Between RGB to HSV 331

Draw Shapes 335

Create Pens. 337

Create Custom Brushes 339

Use Transformations 341

Draw Text 344

Draw Text Diagonally 344

Draw Images 344

Draw Transparent Images 345

Draw to an Off-Screen Buffer 346

Access a Bitmap’s Pixels Directly for Performance 347

Draw with Anti-Aliasing 348

Draw Flicker-Free 349

Resize an Image 350

Create a Thumbnail of an Image 351

Take a Multiscreen Capture 352

Get the Distance from the Mouse Cursor to a Point 354

Determine if a Point Is Inside a Rectangle 355

Determine if a Point Is Inside a Circle 355

Determine if a Point Is Inside an Ellipse 356

Determine if Two Rectangles Intersect. 357

Print and Print Preview 358

Chapter 18 WPF 365

Show a Window 366

Choose a Layout Method 367

Add a Menu Bar 367

Add a Status Bar 369

Add a Toolbar 369

Use Standard Commands 370

Use Custom Commands 371

Enable and Disable Commands 374

Expand and Collapse a Group of Controls 375

Respond to Events 376

Separate Look from Functionality 377

Use Triggers to Change Styles at Runtime 378

Bind Control Properties to Another Object 379

Format Values During Data Binding 383

Convert Values to a Different Type During Data Binding 383

Bind to a Collection 385

Specify How Bound Data Is Displayed 385

Define the Look of Controls with Templates 386

Animate Element Properties 388

Render 3D Geometry 389

Put Video on a 3D Surface 392

Put Interactive Controls onto a 3D Surface 395

Use WPF in a WinForms App 398

Use WinForms in a WPF Application 400

Chapter 19 ASP.NET 401

View Debug and Trace Information 402

Determine Web Browser Capabilities 404

Redirect to Another Page 405

Use Forms Authentication for User Login 406

Use Master Pages for a Consistent Look 409

Add a Menu 411

Bind Data to a GridView 412

Create a User Control 414

Create a Flexible UI with Web Parts 418

Create a Simple AJAX Page 423

Do Data Validation 425

Maintain Application State 429

Maintain UI State 430

Maintain User Data in a Session 431

Store Session State 433

Use Cookies to Restore Session State 434

Use ASP.NET Model-View-Controller (MVC) 436

Chapter 20 Silverlight 443

Create a Silverlight Project 444

Play a Video 445

Build a Download and Playback Progress Bar 449

Response to Timer Events on the UI Thread 451

Put Content into a 3D Perspective 452

Make Your Application Run out of the Browser 453

Capture a Webcam 455

Print a Document 457


Chapter 21 LINQ 461

Query an Object Collection 462

Order the Results 463

Filter a Collection 464

Get a Collection of a Portion of Objects (Projection) 465

Perform a Join 465

Query XML 466

Create XML 467

Query the Entity Framework 467

Query a Web Service (LINQ to Bing) 469

Speed Up Queries with PLINQ (Parallel LINQ) 472

Chapter 22 Memory Management 473

Measure Memory Usage of Your Application 474

Clean Up Unmanaged Resources Using Finalization 475

Clean Up Managed Resources Using the Dispose Pattern 477

Force a Garbage Collection 482

Create a Cache That Still Allows Garbage Collection 482

Use Pointers 485

Speed Up Array Access 486

Prevent Memory from Being Moved 487

Allocate Unmanaged Memory 488

Chapter 23 Threads, Asynchronous, and Parallel Programming 491

Easily Split Work Among Processors 492

Use Data Structures in Multiple Threads 495

Call a Method Asynchronously 496

Use the Thread Pool 497

Create a Thread 498

Exchange Data with a Thread 499

Protect Data Used in Multiple Threads 500

Use Interlocked Methods Instead of Locks 503

Protect Data in Multiple Processes 504

Limit Applications to a Single Instance 505

Limit the Number of Threads That Can Access a Resource 506

Signal Threads with Events 509

Use a Multithreaded Timer 512

Use a Reader-Writer Lock 513

Use the Asynchronous Programming Model 515

Chapter 24 Reflection and Creating Plugins 519

Enumerate Types in an Assembly 520

Add a Custom Attribute 521

Instantiate a Class Dynamically 523

Invoke a Method on a Dynamically Instantiated Class 523

Implement a Plugin Architecture 525

Chapter 25 Application Patterns and Tips 529

Use a Stopwatch to Profile Your Code 530

Mark Obsolete Code 531

Combine Multiple Events into a Single Event 532

Implement an Observer (aka Subscriber) Pattern 536

Use an Event Broker 540

Remember the Screen Location 543

Implement Undo Using Command Objects 545

Use Model-View-ViewModel in WPF 552

Understand Localization 562

Localize a Windows Forms Application 563

Localize an ASP.NET Application 564

Localize a WPF Application 565

Localize a Silverlight Application 570

Deploy Applications Using ClickOnce 572

Chapter 26 Interacting with the OS and Hardware 575

Get OS, Service Pack, and CLR Version 576

Get CPU and Other Hardware Information 576

Invoke UAC to Request Admin Privileges 578

Write to the Event Log 581

Access the Registry 583

Manage Windows Services 584

Create a Windows Service 585

Call Native Windows Functions Using P/Invoke 588

Call C Functions in a DLL from C# 589

Use Memory-Mapped Files 590

Ensure Your Application Works in Both 32-bit and 64-bit Environments 591

Respond to System Configuration Changes 593

Take Advantage of Windows 7 Features 593

Retrieve Power State Information 595

Chapter 27 Fun Stuff and Loose Ends 597

Create a Nonrectangular Window 598

Create a Notification Icon 602

Create a Screen Saver in WPF 605

Show a Splash Screen 614

Play a Sound File 619

Shuffle Cards 620

Appendix Essential Tools 621

Reflector 622

NUnit 623

NDepend 626

FXCop 626

Virtual PC 627

Process Explorer and Process Monitor 628

RegexBuddy 630

LINQPad 630

Where to Find More Tools 631

Index 633

Read More Show Less

Customer Reviews

Average Rating 4
( 2 )
Rating Distribution

5 Star


4 Star


3 Star


2 Star


1 Star


Your Rating:

Your Name: Create a Pen Name or

Barnes & Noble.com Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & Noble.com that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & Noble.com does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at BN.com or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation


  • - By submitting a review, you grant to Barnes & Noble.com and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Noble.com Terms of Use.
  • - Barnes & Noble.com reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & Noble.com also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on BN.com. It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously
Sort by: Showing all of 2 Customer Reviews
  • Anonymous

    Posted March 8, 2010

    No text was provided for this review.

  • Anonymous

    Posted January 20, 2013

    No text was provided for this review.

Sort by: Showing all of 2 Customer Reviews

If you find inappropriate content, please report it to Barnes & Noble
Why is this product inappropriate?
Comments (optional)