Cadenas. Resumen.

Cadena es una lista (o secuencia) de caracteres en un orden específico. La secuencia completa de caracteres se trata como un solo objeto.

Un carácter es cualquier cosa que puede escribir en el teclado con una sola pulsación de tecla (letra, número, reverso barra inclinada o algún otro carácter).
Las cadenas pueden tener espacios: "¡Hola mundo!".
Una cadena vacía es una cadena que tiene 0 caracteres.
C sharp acepta como cadenas todo lo que está escrito entre comillas (""), string es de tipo string.

Importante recordar: las cadenas en C# son inmutables.

Puede escribir un nuevo valor en una cadena usando el operador de entrada:
string s = Console.ReadLine(); También puede simplemente asignar un valor de cadena a la variable, por ejemplo:< /lapso > cadena s = "C sostenido"; Puede definir la longitud de una cadena como esta: int n = s.Length;


Comparación de cadenas. Las cadenas se pueden comparar entre sí como si fueran números. Puedes determinar cuál de las líneas es mayor, cuál es menor.

Al comparar cadenas, se comparan los códigos de caracteres. Hay docenas, si no cientos, de codificaciones de caracteres. La forma más fácil de entender este concepto es entender uno de los más simples, ASCII (puedes leer sobre él aquí< /a>). 
Es necesario comprender que en las codificaciones modernas, tanto las letras rusas como las inglesas están ordenadas alfabéticamente, los números también van de menor a mayor. 
Por ejemplo, en la tabla de códigos ASCII, el código de la letra inglesa 'A' - 65, letras 'a' - 97, dígito '0' tiene el código 48. Las letras rusas se encuentran en la parte extendida de la tabla de códigos ASCII (números del 128 al 255). Las mayúsculas van antes (es decir, tienen un código más pequeño) que las minúsculas.
En la mayoría de las tablas de codificación utilizadas, los patrones son los mismos, las letras minúsculas son posteriores a las mayúsculas, los números son anteriores a las letras y las letras rusas son posteriores a las inglesas.
Al comparar caracteres o cadenas, C# convierte los caracteres a sus respectivos valores ordinales y luego los compara de izquierda a derecha. 

Por ejemplo: "locomotora" < "steamboat", porque las palabras difieren en la quinta letra y "en" < "x".

Al ingresar una cadena, puede dividirla inmediatamente en partes con cualquier separador.
Hemos hecho esto antes cuando ingresamos múltiples variables numéricas en la misma línea. Usamos el método Split() para dividir una cadena en partes. De forma predeterminada, separa las cadenas en subcadenas por espacio.
Con este método, puede dividir la cadena en partes, por ejemplo, por espacios. Y escribe cada parte de la cadena en una variable separada.
Ejemplo: cadena[] S = Consola.ReadLine().Split(); En el ejemplo, al ingresar dos palabras separadas por un espacio, la primera palabra se almacena en el elemento cero de la matriz s[0], la segunda, en el segundo s[1].

Si necesita usar varios caracteres como separadores, puede especificarlos separados por comas:
  cadena[] S = Console.ReadLine().Split(nuevo[] { ' ', '\n' });  Si puede haber varios espacios consecutivos en la cadena de entrada, también pueden aparecer espacios en la matriz final, para excluir esto, debe agregar un parámetro: string[] S = Console.ReadLine().Split(new[] { ' ', '\n' }, StringSplitOptions.RemoveEmptyEntries); Si necesita usar delimitadores de subcadena: string[] S = Console.ReadLine().Split(nuevo[] { "\\r\\n", "\r", "\n", "" }, StringSplitOptions.RemoveEmptyEntries);

Las cadenas se pueden sumar usando el signo "+". Esta operación se denomina concatenación de cadenas o concatenación
Por ejemplo,  cadena s = "Hola,"; cadena s1 = "mundo"; Consola.WriteLine(s + s1); La pantalla mostrará la frase "Hola mundo" (sin comillas).
 

Hacer referencia a índices de fila
Cada carácter de una cadena tiene un número (llamado índice), y la indexación en el lenguaje de programación C# comienza desde cero. Es decir, el primer carácter tiene índice 0, el segundo - 1, y así sucesivamente.
Se puede acceder a los caracteres de cadena mediante índices, que se indican entre corchetes s[i].
 
Ejemplo

¡Importante!
Al acceder a un elemento de cadena en el índice i, el tipo s[i] no es string sino char. Esto significa que no se trata de una cadena, sino de un carácter que corresponde a algún número entero en la tabla de códigos de caracteres. En particular, cuando agrega dos elementos de tipo char , obtiene un número entero: la suma de los códigos de estos elementos. Sin embargo, si muestra s[i], se mostrará el carácter i-th de la cadena, no el número correspondiente. 

Cadena S H e l l o
Índice S[0] S[1] S[2] S[3] S[4]
Debido a que se puede acceder a un carácter por índice, se puede usar un bucle variable para iterar sobre todos los caracteres , que tomará posibles valores de índice. Por ejemplo, un programa que muestra todos los códigos de caracteres de la cadena s se vería así: para (int i = 0; i < s.Length; i++) {   Consola.WriteLine(s[i]); Console.WriteLine(Convert.ToInt32(s[i])); } Notas del programa:
1) s.Length busca la longitud de una cadena. El índice del primer carácter es 0 y el índice del último es s.Length-1. La variable de bucle i solo tomará valores secuencialmente de 0 a 
s.Length-1;
2) en cada línea, primero se mostrará el símbolo en sí y luego su código, que se puede obtener a través del método  Convert.ToInt32();

La misma enumeración se puede escribir más corta:


foreach (char c in s)

    Consola.WriteLine(c);
    Consola.WriteLine(Convert.ToInt32(c));
}
En este fragmento, el encabezado del bucle recorre todos los s caracteres, colocándolos uno por uno en la variable c. La peculiaridad de C# cuando se trabaja con cadenas es que las cadenas son objetos inmutables. En otras palabras, no podemos cambiar los caracteres individuales de una cadena.
Por ejemplo, la siguiente instrucción no funcionará:
s[5]=" ";