Caso inverso de todos los caracteres alfabéticos en cadena C #

¿Cuál es la forma más simple de revertir el caso de todos los caracteres alfabéticos en una cadena de C #? Por ejemplo "aBc1 $;" debería convertirse en "AbC1 $;" Podría escribir fácilmente un método que haga esto, pero espero que haya una llamada a la biblioteca que no conozco que lo haga más fácil. También me gustaría evitar tener una lista de todos los caracteres alfabéticos conocidos y comparar cada carácter con lo que está en la lista. Tal vez esto se pueda hacer con expresiones regulares, pero no las conozco muy bien. Gracias.

Gracias por la ayuda. Creé un método de extensión de cadena para esto que está inspirado principalmente en la solución de Anthony Pegram, pero sin LINQ. Creo que esto logra un buen equilibrio entre legibilidad y rendimiento. Esto es lo que se me ocurrió.

public static string SwapCase(this string source) {
    char[] caseSwappedChars = new char[source.Length];
    for(int i = 0; i < caseSwappedChars.Length; i++) {
        char c = source[i];
        if(char.IsLetter(c)) {
            caseSwappedChars[i] =
                char.IsUpper(c) ? char.ToLower(c) : char.ToUpper(c);
        } else {
            caseSwappedChars[i] = c;
        }
    }
    return new string(caseSwappedChars);
}

Respuestas a la pregunta(9)

Su respuesta a la pregunta