StringBuilder.AppendFormat() versus String.Format()

If you are familiar with .NET then you will probably already know that for efficiency, you should use a StringBuilder rather than concatenating strings in a loop. I recently wrote some code that looked similar to this:

StringBuilder sb = new StringBuilder();

sb.Append(String.Format(“{0} {1}”, areaCode, phoneNumber));

where this code was called many times in a loop (not instantiation of the StringBuilder, obviously). It turns out there is a better way of doing it, using one of the StringBuilder class’s methods:

sb.AppendFormat(“{0} {1}”, areaCode, phoneNumber);

As Dustin Campbell mentions here, the reason this has slightly better performance is because internally, String.Format() actually creates a StringBuilder and calls StringBuilder.AppendFormat()

Identify Galaxies…

Want to have a bit of fun and do something useful? Why not put those spare ‘wetware’ cycles to good use and identify a few galaxies! Check out the GalaxyZoo project.

Book Review: C# Cookbook (2nd Edition), Jay Hilyard and Stephen Teilhet, O’REILLY


The C# Cookbook, Second Edition has been updated and revised for C# 2.0 and version 2.0 of the .NET framework, and despite the fact that version 3.5 of the .NET framework is imminent, it remains a must have book to have on hand. It is essentially a collection of examples showing how to solve specific programming problems (some of which you might not have even realised you have, such as boxing/unboxing and efficient string handling, to name just a few…)

The C# Cookbook has over 1100 pages and is arranged into 20 chapters, each of which focuses on a particular area in C#. Despite its size it is not daunting to read. Here are the topics covered:

  1. Numbers and Enumerations
  2. Strings and Characters
  3. Classes & Structures
  4. Generics
  5. Collections
  6. Iterators and Partial Types
  7. Exception Handling
  8. Diagnostics
  9. Delegates, Events and Anonymous methods
  10. Regular Expressions
  11. Data Structures and Algorithms
  12. Filesystem I/O
  13. Reflection
  14. Web
  15. XML
  16. Networking
  17. Security
  18. Threading and Synchronisation
  19. Unsafe Code
  20. Toolbox

This book is in O’Reilly’s ‘cookbook’ series Problem-Solution-Discussion format, and like other books in the series can either be read from cover to cover, or be used as a reference to shed light on a particular problem. Each ‘recipe’ starts with a description of the problem, followed by a complete, documented code sample showing you how to solve it, along with a detailed discussion of how and why it works, and any drawbacks. This format can also serve as an excellent way of mastering aspects of C#.

Like the other O’Reilly cookbooks, this book manages to strike a perfect balance between reference and instruction on real problems developers encounter every day. Hats off to Jay and Stephen for creating such a useful resource.

If you are a developer who writes C# code for a living, I would be surprised if you do not find something useful the first time you pick this book up. If you are thinking of buying just one book on C# 2.0, make it this one. Highly recommended for beginners and experts alike.

The only problem I have now is that I need to go and buy my own copy as this one is now on its way to the User Group library. Of course, I could just borrow it, but I would really like to have a copy on hand all the time…!

You can download the source code here: http://examples.oreilly.com/csharpckbk2/

You can purchase the book online here:
http://www.oreilly.com/catalog/csharpckbk2/
http://www.amazon.com/C-Cookbook-2nd-Cookbooks-OReilly/dp/0596100639

Disclosure: The Perth .NET User Group is a member of the O’Reilly User Group and Professional Association Program. O’Reilly make copies of their books available for user group libraries, and the copy reviewed here was kindly donated by O’Reilly. Thanks to everyone involved at O’Reilly for making this happen. That said, it has not been a factor in reviewing this book.

Age of User Experience: Come on in the waters fine…

A colleague sent me a MS office Groove invitation yesterday evening, so leaving my usual luddite stance behind, I followed the link over to the Microsoft Office 2007 downloads page and was duly asked to sign in via passport. Sounds good thinks I. So I login and get confronted by a completely blank “please enter your details” page. Nothing. It didn’t even have my name filled in. OK, so I’m a bit miffed about that. I start filling in my details and get to the country combo. It says Austria. Close but not quite thinks I! So I drop down the list with the intention of picking Australia:

OK! So where is Australia? I know it should be there, because I’m standing on it.

So much for the age of experience. Sheesh!

PS. I hope it hasn’t been removed because Frank Arrigo is heading back to the US !!! 😉

Certain Certification

Rob Farley raised some very interesting points on the subject of making MS certifications more valuable, namely adaptive exams, a much larger question pool, and the possibility of community involvement in helping to write the questions. I think all three are a great ideas.

A really large pool of questions would obviously make it harder for people to simply rote learn the answers. Of course, creating and vetting questions is time-consuming and expensive. One way of creating a bigger pool is, as Rob mentions, to get the .NET developer community involved.

I started wondering how much profit Microsoft makes from the whole certification thing; the exams, books, courses etc? I guess it must be in their interest to spend money on making the certifications as valid as possible. So come on Microsoft, if you think certifications are a good idea, let’s see some money spent on something innovative! It’s a hard problem, but other certification bodies seem to have solved some of the problems (I’m thinking Cisco…), and if anyone has the resources, Microsoft does

Perth .NET User Group Library

One of the ways we are making the Perth .NET user group a resource for the .NET community in Perth is restocking the existing Perth .NET Community of Practice library with the latest books, and making them easily accessible.

Nick has already set up a borrowing system through HireThings. There are details here on using HireThings to borrow books

The books will be easily accessible from their new location in the centre of the city. When we receive new books we will post an entry to the Perth user group site (http://www.perthdotnet.org/). These will mainly be .NET development books but there will also some design and process books as well.

The user group is currently a member of the O’Reilly user group program and we are in the process of joining the Addison-Wesley program, which is reopening in August.

If there are any books you are particularly interested in reading, let myself, Alistair or Nick know and we will endeavor to get them through one of the publisher user group programs (ISBN please where possible).

Also, if anyone in Perth is interested in reviewing any of the new books we have available just drop me a line. Writing a review is obviously a great way to investigate what a book has to offer and let others know its usefulness, but also helps you explore a technology that you might not have looked at otherwise.

Problems with Blogger?

I’ve noticed that in the last 24 hours or so, if I try to create a new post with Blogger, I’m unable to give the Title textbox the focus by clicking in it. Just discovered that clicking the “Title:” label will give it the focus. Anyone else having this problem?