Кажется, что все хотят преобразовать строку в массив символов.
Как насчет
for(int i = 0; i < tmpString.Length; i++)
Console.WriteLine(tmpString[i]);
Теперь у вас есть скорость массива символов без дополнительной памяти для создания копии.
edit: String - это внутренний массив символов, просто нет способа изменить их значения, потому что String неизменны.Но вы можете читать из этого массива символов.String = символьный массив только для чтения.
Я не могу придумать ни одной причины для преобразования String в Char [], если вы не хотите «редактировать» строку.
long lTicks;
char[] tmpChar = { 'a', 'b', 'c', 'd', 'e' };
String tmpString = "abcde";
char chRead;
lTicks = DateTime.Now.Ticks;
for (int i = 0; i < 100000000; i++)
chRead = tmpChar[i%5];
Console.WriteLine(((DateTime.Now.Ticks - lTicks) / 10000).ToString());
lTicks = DateTime.Now.Ticks;
for (int i = 0; i < 100000000; i++)
chRead = tmpChar[i % 5];
Console.WriteLine(((DateTime.Now.Ticks - lTicks) / 10000).ToString());
lTicks = DateTime.Now.Ticks;
for (int i = 0; i < 100000000; i++)
chRead = tmpString[i%5];
Console.WriteLine(((DateTime.Now.Ticks - lTicks) / 10000).ToString());
lTicks = DateTime.Now.Ticks;
for (int i = 0; i < 100000000; i++)
chRead = tmpString[i % 5];
Console.WriteLine(((DateTime.Now.Ticks - lTicks) / 10000).ToString());
Console.ReadLine();
Как ни странно, String на самом деле всегда быстрее, чем Char [].Я запускал каждые два раза, чтобы убедиться, что не было проблем с загрузкой, влияющих на результаты.Скомпилировано как релиз с оптимизацией.Char [] был для меня ~ 1950 мс, а String ~ 1850 мс для меня.