Как я могу определить символ или строковую константу в C # для ASCII 127? - PullRequest
4 голосов
/ 02 января 2011

Как создать символьную или строковую константу, содержащую один символ ASCII 127?

// Normal printing character - no problems
const char VPIPE = '|';
//error "The expression being assigned to 'DEL' must be constant"
const char DEL = new string(127, 1); 

Было бы также хорошо, если бы константы были строками вместо символов:

const string VPIPE = "|";
const string DEL = "???";

Я знаю, что ASCII 127 - это не то, что вы можете «напечатать» на клавиатуре, но должен быть способ создать из него строковую или символьную константу (или использовать встроенную, которую я не нашел).

Ответы [ 4 ]

9 голосов
/ 02 января 2011

Лично я бы использовал escape-последовательность "\ u":

const char Delete = '\u007f';

Я не заинтересован в escape-последовательности "\ x", упомянутой в другом месте - она ​​не так уж плоха для символов литералов (где несколько символов => ошибка компилятора), но это может быть неприятно строка литералы:

// Tab the output
Console.WriteLine("\x9Good line");
Console.WriteLine("\x9Bad line");

Предполагая, что вы можете увидеть ошибку здесь, насколько вы уверены, что избежали бы ее, когда делали "просто быстрое изменение"?

Учитывая, что я избегаю этого для строковых литералов, я думаю, что имеет смысл быть последовательным и просто использовать "\ u" везде, где я хочу экранировать шестнадцатеричное значение.

9 голосов
/ 02 января 2011

'\x7F' сделает это (а также может быть встроен в строку при необходимости).

6 голосов
/ 02 января 2011

попробуйте

 const char s = ((char)127);
2 голосов
/ 02 января 2011

Неважно. Я слишком быстро нажал на курок.

const char DEL = (char)127;
...