Home > Store > Programming > C#

larger cover

Add To My Wish List

C# 4.0 How-To

  • By Ben Watson
  • Published Mar 1, 2010 by Sams. Part of the How-To series.
    • Copyright 2010
    • Dimensions: 6 X 9
    • Pages: 672
    • Edition: 1st
    • Book
    • ISBN-10: 0-672-33063-6
    • ISBN-13: 978-0-672-33063-6

Register your product to gain access to bonus material or receive a coupon.

  • Description
  • Downloads
  • Extras
  • Reviews
  • Sample Content
  • Updates

Product Author Bios

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++.

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

 

Customer Reviews

33 of 33 people found the following review helpful
5.0 out of 5 stars Useful .NET Framework code algorithms in C# for experienced developers, April 16, 2010
By 
Michael Keller (Ewing, NJ USA) - See all my reviews
(REAL NAME)   
This review is from: C# 4.0 How-To (Paperback)
This book's title does not quite match its content but the book's introduction does indicate this. This is primarily a very good book of code and code algorithms in the .NET framework using C#. That being said the book does cover the changes made to the .NET 4.0 framework and to C# 4.0.

The code is very well written--it is beautiful well structured communicative code. The code in the book is sparsely commented; it is so well-written that few comments are needed. As I have said, in many ways the book is a book of code algorithms, for example, in chapter 5 Convert Between Number Bases, Convert a Number to Bytes, Determine if an Integer is Even, Determine if a Number is Prime, Count the Number of 1 Bits etc. All these code examples are useful algorithms but have nothing to do with .NET Framework 4.0 or C# 4.0 per se.

Despite what the Introduction says this is decidedly not a book for beginners. While they may be able to find useful algorithms here and there... Read more
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


10 of 11 people found the following review helpful
5.0 out of 5 stars Very practical, great examples., March 15, 2010
By 
J. Boal "Agilista" (Seattle, WA USA) - See all my reviews
(REAL NAME)   
This review is from: C# 4.0 How-To (Paperback)
This is a great how-to book for anyone needing to write code today in C#. It has so many great examples and code snips for really practical things that we all need to write day in and day out. There are not only great code examples, but also best-practices that have been adopted across the industry. Ben also discusses the why behind the best practices, and explains the benefits of the structure of the examples. From [...], WPF, WCF, LINQ, SQL databases, and Silverlight - all have relevant, complete examples of how to do practical things using these technologies. C# is a complex language, with many facets and aspects, all of which are covered with examples. The code samples are well-written and understandable, some get into advanced aspects of the topics they cover which really is of real value even to advanced developers. The user level is targeted for beginners and intermediate developers, and certainly it will be of real value to them too. This is one reference book I am keeping... Read more
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


7 of 7 people found the following review helpful
5.0 out of 5 stars Hit the ground running., April 16, 2010
By 
This review is from: C# 4.0 How-To (Paperback)
This book is a twist on the C# Cookbook style of books only better. The examples are organized and tailored around implementation or solving problems instead of demonstrating theories. Descriptions are very brief, to the point and still effective. The book is also well indexed so you are able to isolate solutions quickly. This is really a gem feature well implemented; in the past I've seen well indexed books with average solutions used time and time again over books that demonstrated technical competence and yet are difficult to sift through. I have not tried any of the solutions in this book yet, but they look really good so far. I think this will be a go to book for me in the near future.

This book is not for the absolute beginner. You will need some context. If needed, do some tutorial videos, write some code or something before jumping into this one.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


Share your thoughts with other customers:
 See all 16 customer reviews...

Online Sample Chapter

C# 4.0 How-To: Creating Versatile Types

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

 

PART I: C# FUNDAMENTALS

 

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

 

PART II: HANDLING DATA

 

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

 

PART III: USER INTERACTION

 

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

 

PART IV: ADVANCED C#

 

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

 

Sample Pages

Download the sample pages (includes Chapter 2 and Index)

 
Best Value

Book + eBook Bundle  $71.98  $43.19

Book Price $31.99
eBook Price $11.20
eBook formats included

Buy

This book includes free shipping!

Buy

Book  $39.99  $31.99

Usually ships in 24 hours.

This book includes free shipping!

Buy

eBook (Watermarked)  $31.99  $25.59

Includes EPUB, MOBI, and PDF
About eBook Formats

This eBook includes the following formats, accessible from your Account page after purchase:

ePubEPUBThe open industry format known for its reflowable content and usability on supported mobile devices.

MOBIMOBIThe eBook format compatible with the Amazon Kindle and Amazon Kindle applications.

Adobe ReaderPDFThe popular standard, used most often with the free Adobe® Reader® software.

This eBook requires no passwords or activation to read. We customize your eBook by discretely watermarking it with your name, making it uniquely yours.

Purchase Reward: One Month Free Subscription
By completing any purchase on InformIT, you become eligible for an unlimited access one-month subscription to Safari Books Online.

Get access to thousands of books and training videos about technology, professional development and digital media from more than 40 leading publishers, including Addison-Wesley, Prentice Hall, Cisco Press, IBM Press, O'Reilly Media, Wrox, Apress, and many more. If you continue your subscription after your 30-day trial, you can receive 30% off a monthly subscription to the Safari Library for up to 12 months. That's a total savings of $199.