Lo más importante que debes recordar sobre los string de C# es que son objetos inmutables que representan texto como una secuencia de caracteres Unicode (letras, dígitos, signos de puntuación, etc.). Para definir una instancia de string se usan comillas dobles:
string fruit = "Apple";
Puedes manipular un string llamando a uno de sus métodos o propiedades. Como los valores de tipo string nunca cambian una vez definidos, todos los métodos de manipulación de string devuelven un string nuevo.
Un string está delimitado por comillas dobles ("). Algunos caracteres especiales necesitan escaparse con el carácter de barra invertida (\). Los string también pueden llevar como prefijo el símbolo arroba (@), lo que los convierte en un string textual que ignora cualquier carácter de escape.
string escaped = "c:\\test.txt";
string verbatim = @"c:\test.txt";
escaped == verbatim;
// => true
Si solo necesitas una parte de un string, puedes usar el método Substring() para extraer justo esa parte:
string sentence = "Frank chases the bus.";
string name = sentence.Substring(0, 5);
// => "Frank"
El método IndexOf() sirve para encontrar el índice de la primera aparición de un string dentro de otro string, y devuelve -1 si no se encuentra el valor especificado:
"continuous-integration".IndexOf("integration")
// => 11
"continuous-integration".IndexOf("deployment")
// => -1
Por último, hay muchas formas de concatenar un string. La más sencilla es usar el operador +.
string name = "Jane";
"Hello " + name + "!";
// => "Hello Jane!"
Para cualquier formato de string más complejo que una simple concatenación, es preferible usar la interpolación de string. Para habilitar la interpolación en un string, antepón el símbolo de dólar ($).
string name = "Jane";
$"Hello {name}!";
// => "Hello Jane!"