Jak zadeklarować literał Char w języku Visual Basic .NET?

91

Z Option Strict On:

Dim theLetterA As Char = "A"

zwraca błąd dotyczący konwersji ciągu znaków "A"na plik Char.

Jaka jest składnia wprowadzania Charliterału?

Jason Berkan
źródło

Odpowiedzi:

160

Literał znakowy jest wprowadzany za pomocą pojedynczego ciągu znaków z końcówką C.

Dim theLetterA As Char = "A"C
Jeff Mercado
źródło
20
To naprawdę do niczego, łamie wszelkie konwencje! Dziękuję za pomoc
Alvaro
3
Właściwie dosłowne przyrostki wskazujące typ są tak stare jak C i Basic, aczkolwiek nie dla typów związanych ze stringami, i ja też czułem, że było to trochę wątpliwe, gdy pierwszy raz go zobaczyłem.
Swanny
9
Musiałem użyć "" "" C, aby wyciąć cudzysłowy z ciągu. Jak brzydko.
Matt
13
To sprawiło, że umarłem trochę w środku.
Inspector Squirrel
4
Małe litery „c” też działają. Nieco mniej brzydki. Nie różni się to zbytnio od deklarowania na przykład łańcuchów Pythona jako literałów Unicode, prawda?
deed02392
5

Użyłbym CChar. Na przykład:

 Dim theLetterA As Char = CChar("A")

Sprawdź witrynę MSDN https://msdn.microsoft.com/en-us/library/s2dy91zy.aspx, aby uzyskać szczegółowe informacje na temat CChar.

Alan Barksdale
źródło
Zasługuje na więcej głosów. Znakowanie ma więcej sensu niż dekorator sznurków, jakiego nigdy wcześniej nie widziałem.
RJB,
19
@RJB: Możesz bardziej polubić składnię, ale faktem jest, że nie jest to literał znakowy. Jest to instrukcja, która wykonuje konwersję w czasie wykonywania z ciągu znaków na znak. Wcale nie to samo.
sstan
2
Zgadzam się. to jest stary kod VB i wymaga wizualnego odniesienia. Właściwym sposobem jest użycie klasy konwersji. Convert.ToChar ("A")
Kevbo
@sstan Nie mam żadnego oficjalnego oświadczenia, ale jest bardzo prawdopodobne, że kompilator zagraża tej sekwencji jako literał znakowy („A” c) w czasie kompilacji.
II ARROWS
@Kevbo - to nadal akcja uruchomieniowa zamiast literału znakowego. Prawdopodobnie nieefektywne. Co ważniejsze, dużo bardziej szczegółowe. Jak wygląda Convert.ToChar("A")poprawa czytelności "A"c?
ToolmakerSteve
2

W przypadku próby uzyskania podwójnego cudzysłowu jako literału znakowego, musisz użyć dodatkowego dziwacznego formatu VB:

Dim theQuote As Char = """"C

Lub

Dim theQuote As Char = CChar("""")
andyb
źródło
1
Przypuszczam, że zależy od twojej definicji czytelności. Zwykle sam unikam „magicznych liczb” i chociaż wyrażenie VB jest dziwacznym AF, nigdy nie musiałbyś otwierać tabeli ASCII, aby sprawdzić, czy jest poprawna.
andyb
Widzę. Nie sądzę, aby kod ASCII był „magiczny”, gdy mówimy o znaku CHAR, ponieważ jest to rzeczywista liczba przechowywana przez znak CHAR. Znak to liczba. Gdybyś miał sprawdzić pamięć theQuote, zobaczyłbyś 34.
HackSlash