Wie deklarieren Sie ein Char-Literal in Visual Basic .NET?

89

Mit Option Strict On:

Dim theLetterA As Char = "A"

Gibt einen Fehler beim Konvertieren der Zeichenfolge "A"in a zurück Char.

Wie lautet die Syntax zur Eingabe eines CharLiteral?

Jason Berkan
quelle

Antworten:

158

Ein Zeichenliteral wird mit einer einzelnen Zeichenfolge eingegeben, die mit einem Suffix versehen ist C.

Dim theLetterA As Char = "A"C
Jeff Mercado
quelle
19
Das ist wirklich scheiße, bricht jede Konvention! Vielen Dank für Ihre Hilfe
Alvaro
3
Tatsächlich ist das wörtliche Suffix zur Angabe des Typs so alt wie C und Basic, allerdings nicht für Zeichenfolgen, und auch ich hatte das Gefühl, dass es beim ersten Mal etwas zweifelhaft war, als ich es sah.
Swanny
9
Ich musste "" "" C verwenden, um Anführungszeichen aus einer Zeichenfolge zu schneiden. Wie hässlich.
Matt
11
Das hat mich innerlich ein wenig sterben lassen.
Inspektor Eichhörnchen
4
Kleinbuchstaben 'c' funktionieren auch. Etwas weniger hässlich. Dies unterscheidet sich nicht wesentlich davon, beispielsweise Python-Zeichenfolgen als Unicode-Literale zu deklarieren, oder?
deed02392
4

Ich würde CChar verwenden. Z.B:

 Dim theLetterA As Char = CChar("A")

Weitere Informationen zu CChar finden Sie auf der MSDN-Website https://msdn.microsoft.com/en-us/library/s2dy91zy.aspx .

Alan Barksdale
quelle
Verdient mehr positive Stimmen. Ein Charakter ist sinnvoller als ein Streichdekorateur, wie ich ihn noch nie gesehen habe.
RJB
18
@RJB: Die Syntax gefällt Ihnen vielleicht besser, aber Tatsache ist, dass dies kein Zeichenliteral ist . Es ist eine Anweisung, die eine Laufzeitkonvertierung von einer Zeichenfolge in ein Zeichen durchführt. Überhaupt nicht dasselbe.
Sstan
2
Genau. Dies ist alter VB-Code und erfordert die visuelle Basisreferenz. Der richtige Weg ist die Verwendung der Konvertierungsklasse. Convert.ToChar ("A")
Kevbo
@sstan Ich habe keine offizielle Erklärung, aber es ist sehr wahrscheinlich, dass der Compiler diese Sequenz beim Kompilieren als Zeichenliteral ("A" c) bedroht.
II Pfeile
@ Kevin - das ist immer noch eine Laufzeitaktion anstelle eines Zeichenliteral. Wahrscheinlich ineffizient. Noch wichtiger, viel ausführlicher. Wie ist Convert.ToChar("A")eine Verbesserung der Lesbarkeit vorbei "A"c?
ToolmakerSteve
2

Wenn Sie versuchen, ein doppeltes Anführungszeichen als Zeichenliteral zu erhalten, müssen Sie das besonders eigenartige VB-Format verwenden:

Dim theQuote As Char = """"C

Oder

Dim theQuote As Char = CChar("""")
andyb
quelle
1
Kommt wohl auf deine Definition von lesbar an. Normalerweise vermeide ich selbst "magische Zahlen", und obwohl der VB-Ausdruck ein eigenartiger AF ist, müssten Sie niemals eine ASCII-Tabelle aufrufen, um zu überprüfen, ob sie richtig ist.
Andyb
Aha. Ich denke nicht, dass der ASCII-Code "magisch" ist, wenn es um eine CHAR geht, da dies die tatsächliche Nummer ist, die von der CHAR gehalten wird. Ein Zeichen ist eine Zahl. Wenn Sie den Speicher untersuchen theQuotewürden, würden Sie sehen 34.
HackSlash