Как объявить литерал Char в Visual Basic .NET?

91

С Option Strict On:

Dim theLetterA As Char = "A"

возвращает ошибку о преобразовании строки "A"в Char.

Каков синтаксис для ввода Charлитерала?

Джейсон Беркан
источник

Ответы:

160

Символьный литерал вводится с использованием односимвольной строки с суффиксом C.

Dim theLetterA As Char = "A"C
Джефф Меркадо
источник
20
Это действительно отстой, нарушает все условности! Спасибо за вашу помощь
Альваро
3
На самом деле буквальный суффикс для обозначения типа такой же старый, как C и Basic, хотя и не для строковых типов, и я тоже почувствовал, что это немного сомнительно, когда я впервые увидел его.
Swanny
9
Мне нужно было использовать "" "" C, чтобы вырезать кавычки из строки. Как некрасиво.
Мэтт
13
Это заставило меня немного умереть внутри.
Inspector Squirrel
4
Строчная буква "c" тоже работает. Чуть менее некрасиво. Это не сильно отличается от объявления, например, строк Python как литералов Unicode, не так ли?
deed02392 05
5

Я бы использовал CChar. Например:

 Dim theLetterA As Char = CChar("A")

Посетите веб-сайт MSDN https://msdn.microsoft.com/en-us/library/s2dy91zy.aspx для получения дополнительных сведений о CChar.

Алан Барксдейл
источник
Заслуживает больше голосов. Символы имеют больше смысла, чем декораторы строк, которых я никогда раньше не видел.
RJB
19
@RJB: Возможно, вам больше понравится синтаксис, но дело в том, что это не символьный литерал. Это оператор, выполняющий преобразование строки в символ во время выполнения. Совсем не то же самое.
sstan
2
Согласен. это старый код VB, требующий базовой наглядной справки. Правильный способ - использовать класс convert. Convert.ToChar ("A")
Кевбо
@sstan У меня нет официального заявления, но очень вероятно, что компилятор угрожает этой последовательности как символьному литералу ("A" c) во время компиляции.
II ARROWS
@Kevbo - это все еще действие во время выполнения, а не символьный литерал. Наверное, неэффективно. Что еще более важно, гораздо более подробный. Чем Convert.ToChar("A")закончилось улучшение читабельности "A"c?
ToolmakerSteve
2

В случае попытки получить двойные кавычки в качестве символьного литерала вам понадобится дополнительный необычный формат VB:

Dim theQuote As Char = """"C

Или

Dim theQuote As Char = CChar("""")
Эндиб
источник
1
Полагаю, это зависит от вашего определения читабельности. Я обычно сам избегаю "магических чисел", и хотя выражение VB необычно AF, вам никогда не придется открывать таблицу ASCII, чтобы проверить, что это правильно.
Andyb
Понимаю. Я не думаю, что код ASCII является «волшебным», когда мы говорим о CHAR, потому что это фактическое число, содержащееся в CHAR. Символ - это число. Если бы вы проверили память, theQuoteвы бы увидели 34.
HackSlash