65.9K
CodeProject is changing. Read more.
Home

Write right

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1 vote)

Jan 24, 2013

CPOL

1 min read

viewsIcon

5863

Regarding use of the various Write and WriteLine methods

Last night a couple of users posted some code snippets with a common inefficiency related to Console.Write. I don't mean to belittle these users' skills, but rather to speak out about whoever is teaching them.

The relevent snippets are: Console.Write(j.ToString()); and Console.Write(counter.ToString() + (innerloop + 1).ToString() + ",");

Yes, the code works as expected, but do you see my concern about inefficiency?

The first one isn't as bad as the second; it can be reduced to: Console.Write(j); because the Write will perform the ToString() anyway so rather than saving effort, you've increased it.

The second one is more of a concern, I recommend: Console.Write("{0}{1}," , counter , innerloop + 1);

I hope you'll agree that using the overload that allows the Format (http://msdn.microsoft.com/en-us/library/8a7aswa4.aspx[^]) makes the code more readable. But it is also more efficient because it avoids a number of intermediate strings.

Many classes provide Write and WriteLine methods; Console and TextWriter are just two, and there's also String.Format and StringBuilder.AppendFormat -- all of these allow the use of a format and I suggest you use it. This (http://msdn.microsoft.com/en-us/library/26etazsy.aspx[^]) should provide some background on formatting.

So, if you are teaching .net, please show your students more than one overload of a method. If you are a student, please investigate all the methods and overloads a class provides; not only what a teacher, a book, or a tutorial demonstrates. If you are using Visual Studio (and you probably are) use Intellisense to see what options you have; use the right tool for the right job.