Someone recently asked me to write some quick code to writing a reversed string to the console. What I came up with at the time was this:
string s = "abcdefg";
foreach (char c in s.Reverse())
Console.Write(c);
The string class has a Reverse method on it already, but it returns an IEnumerable, not the reversed string.
After the fact, I looked at other ways of doing it and figured out a one-liner:
Console.WriteLine(String.Join("", s.ToCharArray().Reverse<char>()));
Going a step further (since I wanted to experiment a little with extension methods), I wrote this little string class extension method to encapsulate that functionality as follows:
public static class StringExtensions{
public static string ReverseString(this string s)
{
return String.Join("", s.ToCharArray().Reverse<char>());
}
}
Now I can simply write:
string s = "abcdefg";
Console.WriteLine(s.ReverseString());
The whole console program is as follows:
using System;
using System.Linq;
namespace ConsoleApplication1
{
public static class StringExtensions
{
public static string ReverseString(this string s)
{
return String.Join("", s.ToCharArray().Reverse<char>());
}
}
class Program
{
static void Main(string[] args)
{
string s = "abcdefg";
Console.WriteLine(s.ReverseString());
Console.ReadLine();
}
}
}
And since ReverseString is a an extension method extending the Framework string class, it shows up in intellisense like this as if it were a static method on the string class itself. The down arrow indicates it's an extension method (among many already defined on string).