Incremento de char

Encontré una pregunta que preguntaba cómo dejar que el personaje ‘B’ devolviera ‘C’ y luego ‘D’, etc. Las respuestas fueron bastante complejas y en su mayor parte simplemente exageradas.

¿Por qué no usar simplemente esto?

char X='A'; X++ 

EDIT: va de la A a la Z y que sigue?

Si estás contento con los resultados que da, entonces está bien.

Por lo general, cuando he visto preguntas como esa, quieren pasar de “Z” a “AA” o algo así, como las columnas de Excel. Claramente, solo boost un char no lo hará, iría a ‘[‘.

Alternativamente, incluso dentro de un solo carácter, el rango de valores válidos puede no ser contiguo, el ejemplo obvio es hexadecimal. Si incrementas ‘9’ obtienes ‘:’ en lugar de ‘a’ o ‘A’ que probablemente querías. El orden deseado rara vez es “lo que Unicode te dé”.

Si solo quieres incrementar:

 Char x = 'A'; Char y = (Char)(Convert.ToUInt16(x) + 1); 

Pero, si quieres una columna como excel:

  // (1 = A, 2 = B...27 = AA...703 = AAA...) public static string GetColNameFromIndex(int columnNumber) { int dividend = columnNumber; string columnName = String.Empty; int modulo; while (dividend > 0) { modulo = (dividend - 1) % 26; columnName = Convert.ToChar(65 + modulo).ToString() + columnName; dividend = (int)((dividend - modulo) / 26); } return columnName; } // (A = 1, B = 2...AA = 27...AAA = 703...) public static int GetColNumberFromName(string columnName) { char[] characters = columnName.ToUpperInvariant().ToCharArray(); int sum = 0; for (int i = 0; i < characters.Length; i++) { sum *= 26; sum += (characters[i] - 'A' + 1); } return sum; } 

Probablemente porque también está destinado a ir de Z a AA, ala Perl y PHP.