¿Cómo se declara un literal Char en Visual Basic .NET?

89

Con Option Strict On:

Dim theLetterA As Char = "A"

devuelve un error sobre la conversión de la cadena "A"a Char.

¿Cuál es la sintaxis para ingresar un Charliteral?

Jason Berkan
fuente

Respuestas:

158

Un literal de carácter se ingresa utilizando una sola cadena de caracteres con el sufijo C.

Dim theLetterA As Char = "A"C
Jeff Mercado
fuente
19
¡Eso realmente apesta, rompe todas las convenciones! Gracias por tu ayuda
Alvaro
3
En realidad, el sufijo literal para indicar el tipo es tan antiguo como C y Basic, aunque no para tipos relacionados con cadenas, y yo también sentí que era un poco dudoso la primera vez que lo vi.
Swanny
9
Necesitaba usar "" "" C para recortar las comillas de una cadena. Qué feo.
Matt
11
Esto me hizo morir un poco por dentro.
Inspector Squirrel
4
La 'c' minúscula también funciona. Un poco menos feo. Esto no es muy diferente de declarar, por ejemplo, cadenas de Python como literales Unicode, ¿verdad?
deed02392
4

Usaría CChar. P.ej:

 Dim theLetterA As Char = CChar("A")

Consulte el sitio web de MSDN https://msdn.microsoft.com/en-us/library/s2dy91zy.aspx para obtener detalles sobre CChar.

Alan Barksdale
fuente
Se merece más votos a favor. Un personaje tiene más sentido que un decorador de cuerdas como nunca antes había visto.
RJB
18
@RJB: Puede que te guste más la sintaxis, pero el hecho es que no es un carácter literal. Es una declaración que realiza una conversión en tiempo de ejecución de una cadena a un carácter. No es lo mismo en absoluto.
sstan
2
Estoy de acuerdo. este es un código VB antiguo y requiere la referencia visualbasic. La forma correcta es usar la clase convert. Convert.ToChar ("A")
Kevbo
@sstan No tengo ninguna declaración oficial, pero es muy probable que el compilador amenace esa secuencia como carácter literal ("A" c) en tiempo de compilación.
II ARROWS
@Kevbo: sigue siendo una acción en tiempo de ejecución, en lugar de un carácter literal. Probablemente ineficiente. Más importante aún, mucho más detallado. ¿Cómo se Convert.ToChar("A")termina una mejora de la legibilidad "A"c?
ToolmakerSteve
2

En el caso de intentar obtener una comilla doble como un carácter literal, deberá usar el formato VB extra peculiar:

Dim theQuote As Char = """"C

O

Dim theQuote As Char = CChar("""")
andyb
fuente
1
Depende de su definición de legible, supongo. Por lo general, yo mismo evito los "números mágicos", y aunque la expresión VB es AF peculiar, nunca tendrías que abrir una tabla ASCII para comprobar que sea correcta.
andyb
Veo. No creo que el código ASCII sea "mágico" cuando se habla de un CHAR porque ese es el número real que tiene el CHAR. Un char es un número. Si inspeccionaras la memoria theQuote, verías 34.
HackSlash