For those of you that don’t know what FizzBuzz is, it became quite popular awhile back when Jeff Atwood posted to his blog a few quotes from people about interviewing candidates for programming jobs and the fact that many of them can’t code. (It’s possible that the topic originated from someone else. I heard it originally from Scott Hanselman’s blog who referenced Jeff.) FizzBuzz is a simple coding exercise where you write a loop that prints the numbers from 1 to 100, except if the number is divisible by three it outputs Fizz and if the number is divisible by five it outputs Buzz. If it is divisible by both you output FizzBuzz.
What is an Extension Method? An extension method is a new feature in .Net 3.5 that allows you to add methods to an existing object. It allows you to modify an object without needing to create your own version of it through inheritance. Why is this useful? I’m sure there are many reasons. One is that if you don’t have the ability to change the object that is being passed to your class then you can’t just use inheritance and create your own version of the object, but what you can do is create an extension method.
This example that I am going to walk you through will add a method to int called FizzBuzz. Calling this method will output a string with either the number of your int, Fizz, Buzz, or FizzBuzz depending on the criteria stated above.
This code for the extension method is fairly simple:
namespace ExtensionMethodExample
{
public static class CustomExtensionMethods
{
public static string FizzBuzz(this int value)
{
string rtnVal = "";
if (value % 3 == 0)
{
rtnVal += "Fizz";
}
if (value % 5 == 0)
{
rtnVal += "Buzz";
}
if (rtnVal == "")
{
rtnVal = value.ToString();
}
return rtnVal;
}
}
}
Here I have a static class called CustomExtensionMethods. Next, I have created a static method called FizzBuzz. The magic happens when I all this to the input parameter. I then calculate FizzBuzz on my input parameter and return the appropriate string. (I’m sure there is a better way to implement FizzBuzz.)
That’s it. I then utilitize the new FizzBuzz method like this(In my case I have created a simple console application):
using System;
using System.Collections.Generic;
using System.Text;
using ExtensionMethodExample;
namespace ExtenderMethodExample
{
class Program
{
static void Main(string[] args)
{
for (int i = 1; i < 100; i++)
{
Console.WriteLine(i.FizzBuzz());
}
Console.ReadLine();
}
}
}
It’s that simple. Drop this into a VS2008 console application and try it out. You will have complete access to your extension methods via intellisense. Happy coding.
Was this post helpful? Post a comment and let me know.