Во-первых, вы должны выполнить операцию разделения только один раз. Т.е. вместо
some loop {
...
string substring = name.Split('-')[i];
...
}
использование
string[] substrings = name.Split('-');
some loop {
...
string substring = substrings[i];
...
}
Во-вторых, не беспокойтесь о производительности Strint.Split слишком много, если
- у вас реальная, измеримая проблема производительности и
- вы знаете, что виноват String.Split.
Например, если у вас есть какая-либо операция с базой данных, которая занимает 1 секунду, на самом деле не имеет значения, если последующая операция разделения займет 0,001 или 0,002 секунды.
РЕДАКТИРОВАТЬ : Относительно кода в вашем комментарии: Вы можете рефакторинг
foreach (string name in q) {
for (int i = 0; i < 3; i++) {
string substring = name.Split('-')[i];
// do something with substring
}
}
до
foreach (string name in q) {
string[] substrings = name.Split('-');
for (int i = 0; i < 3; i++) {
string substring = substrings[i];
// do something with substring
}
}