Как объявить литерал 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.