Não é bem uma dúvida, eu não sei se foi proposital ou erro mais no final da explicação sobre manipulação strings está o seguinte código:
string nomeCompleto = "guilherme silveira";
int inicioDoSegundoNome = texto.IndexOf("s");
MessageBox.Show(nomeCompleto.Substring(inicioDoSegundoNome)); // imprime guilherme
1- A variável texto referenciada não existe; 2- o texto na realidade a ser impresso após a substituição da variável texto por nomeCompleto é silveira e não guilherme
É isso.