I couldn't resist to give a Linq/delegate alterantive to the original tip.
How about this:
public class Program
{
public static void Main()
{
string s = "AbCdEfGhI§$%&/()1234567890";
Func<char, char> toggle = c => char.IsUpper(c) ? char.ToLower(c) : char.ToUpper(c);
Console.WriteLine(s);
Console.WriteLine(new string(s.Select(toggle).ToArray()));
}
}
Performance may be not optimal, but probably good enoug for many cases...
Cheers
Andi