cómo reemplazar caracteres en una matriz rápidamente

Estoy usando un lector de texto XML en un archivo XML que puede contener caracteres que no son válidos para el lector. Mi pensamiento inicial fue crear mi propia versión del lector de secuencias y limpiar los caracteres incorrectos, pero está ralentizando severamente mi programa.

public class ClensingStream : StreamReader
{
        private static char[] badChars = { '\x00', '\x09', '\x0A', '\x10' };
    //snip
        public override int Read(char[] buffer, int index, int count)
        {
            var tmp = base.Read(buffer, index, count);

            for (int i = 0; i < buffer.Length; ++i)
            {
                //check the element in the buffer to see if it is one of the bad characters.
                if(badChars.Contains(buffer[i]))
                    buffer[i] = ' ';
            }

            return tmp;
        }
}

según mi perfilador, el código pasa el 88% de su tiempo enif(badChars.Contains(buffer[i])) ¿Cuál es la forma correcta de hacer esto para no causar una lentitud horrible?

Respuestas a la pregunta(6)

Su respuesta a la pregunta