Як оголосити літерал Char у Visual Basic .NET?


89

З Option Strict On:

Dim theLetterA As Char = "A"

повертає помилку про перетворення рядка "A"в Char.

Який синтаксис для введення Charлітералу?

Відповіді:


158

Символьний літерал вводиться за допомогою одного рядка символів, суфіксом якого є символ C.

Dim theLetterA As Char = "A"C

19
Це справді відмовно, порушує кожну конвенцію! Дякуємо за допомогу
Альваро

3
Насправді буквальний суфікс для позначення типу є таким же старим, як C і Basic, хоча і не для типів, пов'язаних із рядками, і я теж відчув, що це було трохи сумнівно, коли я вперше побачив його.
Суонні

9
Мені потрібно було використати "" "" C, щоб обрізати лапки з рядка. Як негарно.
Matt

11
Це змусило мене трохи померти всередині.
Інспектор Білка

4
Малі регістри "с" теж працюють. Трохи менш потворний. Це мало чим відрізняється від оголошення, наприклад, рядків Python літералами Unicode, чи не так?
deed02392

4

Я б використав CChar. Наприклад:

 Dim theLetterA As Char = CChar("A")

Перегляньте веб-сайт MSDN https://msdn.microsoft.com/en-us/library/s2dy91zy.aspx для отримання детальної інформації про CChar.


Заслуговує на більше голосів. Чартор має більше сенсу, ніж декоратор рядків, якого я ніколи раніше не бачив.
RJB

18
@RJB: Можливо, синтаксис вам більше подобається, але справа в тому, що це не літеральний символ. Це оператор, який виконує перетворення під час виконання із рядка в символ. Зовсім не однакові.
sstan

2
Я згоден. це старий код VB і вимагає візуального базового посилання. Правильний спосіб - використовувати клас convert. Convert.ToChar ("A")
Кевбо

@sstan У мене немає жодної офіційної заяви, але дуже ймовірно, що компілятор загрожує такою послідовністю як символьний літерал ("A" c) під час компіляції.
II СТРІЛКИ

@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.