, Очевидно, что даже больше места можно сэкономить, используя знания о последнем плохом персонаже.

ользую программу чтения XML-текста в файле XML, который может содержать символы, которые недопустимы для программы чтения. Первоначально я думал о том, чтобы создать собственную версию потокового ридера и очистить плохие символы, но это сильно замедляет мою программу.

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;
        }
}

согласно моему профилировщику код тратит 88% своего времени наif(badChars.Contains(buffer[i])) Как правильно сделать это, чтобы я не вызывала ужасную медлительность?

Ответы на вопрос(6)

Ваш ответ на вопрос