Здесь есть пара проблем. Во-первых, @ "\ u" на самом деле является буквальной строкой "\ u" (также может быть представлено как "\ u").
Другая проблема заключается в том, что вы не можете создать строку описанным способом, поскольку «\ u» не является допустимой строкой. Компилятор ожидает, что значение будет следовать за \ u (например, \ u0100), чтобы определить, каким должно быть закодированное значение.
Вы должны иметь в виду, что строки в .NET являются неизменяемыми, что означает, что когда вы смотрите на то, что происходит за кулисами, с вашим составным примером (`@" \ u "+" 0100 "), вот что на самом деле происходит:
- Создать строку "\ u"
- Создать строку "0100"
- Создать строку "\ u0100"
Итак, у вас есть три строки в памяти. Для того, чтобы это произошло, все строки должны быть действительными.
Первый вариант, который приходит на ум при обработке этих значений, заключается в том, чтобы фактически проанализировать их как целые, а затем преобразовать их в символы. Что-то вроде:
var unicodeValue = (char)int.Parse("0100",System.Globalization.NumberStyles.AllowHexSpecifier);
Что даст вам единственное значение символа Юникод. Оттуда вы можете добавить его в строку или преобразовать в строку, используя ToString()
.