Comment déclarer un littéral Char dans Visual Basic .NET?

89

Avec Option Strict On:

Dim theLetterA As Char = "A"

renvoie une erreur de conversion de la chaîne "A"en a Char.

Quelle est la syntaxe pour entrer un Charlittéral?

Jason Berkan
la source

Réponses:

158

Un littéral de caractère est entré à l'aide d'une seule chaîne de caractères suffixée par un C.

Dim theLetterA As Char = "A"C
Jeff Mercado
la source
19
Ça craint vraiment, casse toutes les conventions! Merci pour votre aide
Alvaro
3
En fait, le suffixe littéral pour indiquer que le type est aussi vieux que C et Basic, mais pas pour les types liés aux chaînes, et moi aussi, j'ai senti que c'était un peu douteux la première fois que je l'ai vu.
Swanny
9
J'avais besoin d'utiliser "" "" C pour couper les guillemets d'une chaîne. Horrible.
Matt
11
Cela m'a fait mourir un peu à l'intérieur.
Inspecteur Squirrel
4
Le «c» minuscule fonctionne aussi. Un peu moins moche. Ce n'est pas très différent de déclarer par exemple des chaînes Python comme des littéraux Unicode, n'est-ce pas?
deed02392
4

J'utiliserais CChar. Par exemple:

 Dim theLetterA As Char = CChar("A")

Consultez le site Web MSDN https://msdn.microsoft.com/en-us/library/s2dy91zy.aspx pour plus de détails sur CChar.

Alan Barksdale
la source
Mérite plus de votes positifs. Un caractère a plus de sens qu'un décorateur de cordes comme je ne l'ai jamais vu auparavant.
RJB
18
@RJB: Vous aimerez peut-être mieux la syntaxe, mais le fait est que ce n'est pas un caractère littéral. C'est une instruction qui effectue une conversion d'exécution d'une chaîne en caractère. Pas du tout pareil.
sstan
2
Je suis d'accord. il s'agit d'un ancien code VB et nécessite la référence visualbasic. La bonne façon est d'utiliser la classe convert. Convert.ToChar ("A")
Kevbo
@sstan Je n'ai aucune déclaration officielle, mais il est très probable que le compilateur menace cette séquence en tant que caractère littéral ("A" c) lors de la compilation.
II ARROWS
@Kevbo - c'est toujours une action d'exécution, au lieu d'un littéral de caractère. Probablement inefficace. Plus important encore, beaucoup plus verbeux. Comment se passe Convert.ToChar("A")une amélioration de la lisibilité "A"c?
ToolmakerSteve
2

Dans le cas où vous essayez d'obtenir un guillemet double comme littéral de caractère, vous devrez utiliser le format VB extra original:

Dim theQuote As Char = """"C

Ou

Dim theQuote As Char = CChar("""")
Andyb
la source
1
Cela dépend de votre définition de lisible, je suppose. J'évite généralement moi-même les «nombres magiques», et bien que l'expression VB soit un AF excentrique, vous n'aurez jamais à ouvrir une table ASCII pour vérifier qu'elle était correcte.
andyb
Je vois. Je ne pense pas que le code ASCII soit "magique" quand on parle d'un CHAR parce que c'est le nombre réel détenu par le CHAR. Un caractère est un nombre. Si vous deviez inspecter la mémoire, theQuotevous verriez 34.
HackSlash