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?

Odpowiedzi:


160

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

Dim theLetterA As Char = "A"C

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.


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("""")

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.