Я использую XML Text reader в 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]))
, каков правильный способ сделать это, чтобы я не вызывал ужасную медлительность?