VB.NET Как инициализировать константу с неразрывным пробелом - PullRequest
2 голосов
/ 20 апреля 2019

У меня есть этот код, написанный на c #, и он действителен и работает.

public const char NBSP = '\u00A0';

По некоторым причинам мне нужно написать этот метод на VB.net. Я попробовал это:

1

Public Const NBSP As Char = "\u00A0"

Ошибка: опция «Строгое вкл.» Запрещает неявные преобразования из «String» в «Char»

2

Public Const NBSP As Char = "\u00A0"c

Ошибка: символьная константа должна содержать ровно один символ.

3

Public Const NBSP As Char = &HA0 'Or 0x00A0

Ошибка: целочисленные значения не могут быть преобразованы в Char.

Примечание: я не могу использовать функцию ChrW. Ни Convert.ToChar (), поскольку это Const. Одним из решений может быть удаление ключа Const, но для меня это выглядит ужасно.

Я думаю, что мне следует использовать String вместо типа Char. Но не уверен, что это может вызвать проблемы?

Public Const NBSP As String = "\u00A0"

Есть предложения?

1 Ответ

1 голос
/ 20 апреля 2019

Различные методы.

Использование целого числа для хранения значения, а затем преобразование его в char с использованием ChrW () :

Dim nbs1 As Integer = &HA0
Console.WriteLine("NBS" & New String({ChrW(nbs1)}))

Использование байтового массива и вызов Encoding.Unicode.GetString () для преобразования байтового массива в строку. Обратите внимание, что порядок байтов инвертирован:

Dim nbs2 As Byte() = {&HA0, &H0}
Console.WriteLine("NBS" & Encoding.Unicode.GetString(nbs2))

Использование Regex.Unescape () для преобразования экранированного символа Юникод "\ uXXXX" в строку:

Dim nbs3 As String = "\u00A0"
Dim nbs4 = "NBS" & Regex.Unescape(nbs3)
Console.WriteLine(nbs4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...