La solution la plus directe et la plus efficace consiste à parcourir en boucle les caractères de la chaîne :
int cnt = 0;
foreach (char c in test) {
if (c == '&') cnt++;
}
Vous pouvez utiliser les extensions Linq pour créer une version plus simple et presque aussi efficace. Il y a un peu plus de frais généraux, mais les performances sont étonnamment proches de celles de la boucle :
int cnt = test.Count(c => c == '&');
Ensuite, il y a le vieux Replace
Cependant, cette astuce est mieux adaptée aux langages où le bouclage est difficile (SQL) ou lent (VBScript) :
int cnt = test.Length - test.Replace("&", "").Length;