Como você declara um literal Char no Visual Basic .NET?

89

Com Option Strict On:

Dim theLetterA As Char = "A"

retorna um erro sobre a conversão da string "A"em um Char.

Qual é a sintaxe para inserir um Charliteral?

Jason Berkan
fonte

Respostas:

158

Um literal de caractere é inserido usando uma única string de caractere sufixada com um C.

Dim theLetterA As Char = "A"C
Jeff Mercado
fonte
19
Isso realmente é uma merda, quebra todas as convenções! Obrigado pela sua ajuda
Alvaro
3
Na verdade, o sufixo literal para indicar tipo é tão antigo quanto C e Basic, embora não seja para tipos relacionados a strings, e eu também achei que era um pouco duvidoso na primeira vez que o vi.
Swanny de
9
Eu precisava usar "" "" C para cortar aspas de uma string. Que feio.
Matt
11
Isso me fez morrer um pouco por dentro.
Inspetor Esquilo
4
'C' minúsculo também funciona. Um pouco menos feio. Isso não é muito diferente de declarar, por exemplo, strings de Python como literais Unicode, não é?
deed02392
4

Eu usaria CChar. Por exemplo:

 Dim theLetterA As Char = CChar("A")

Verifique o site do MSDN https://msdn.microsoft.com/en-us/library/s2dy91zy.aspx para obter detalhes sobre CChar.

Alan Barksdale
fonte
Merece mais votos positivos. Um personagem faz mais sentido do que um decorador de cordas como eu nunca vi antes.
RJB
18
@RJB: Você pode gostar mais da sintaxe, mas o fato é que este não é um literal de caractere. É uma instrução que executa uma conversão em tempo de execução de uma string para um caractere. Não é a mesma coisa.
stan
2
Concordo. este é um código VB antigo e requer a referência visualbasic. A maneira certa é usar a classe convert. Convert.ToChar ("A")
Kevbo
@sstan Não tenho nenhuma declaração oficial, mas é muito provável que o compilador ameace essa sequência como literal de caractere ("A" c) em tempo de compilação.
II ARROWS
@Kevbo - ainda é uma ação em tempo de execução, em vez de um literal de caractere. Provavelmente ineficiente. Mais importante, muito mais detalhado. Como é Convert.ToChar("A")uma melhoria de legibilidade "A"c?
Toolmaker Steve
2

No caso de tentar obter aspas duplas como literal de caractere, você precisará usar o formato VB peculiar extra:

Dim theQuote As Char = """"C

Ou

Dim theQuote As Char = CChar("""")
andyb
fonte
1
Depende da sua definição de legível, suponho. Eu geralmente evito "números mágicos" e, embora a expressão VB seja peculiar, você nunca terá que puxar uma tabela ASCII para verificar se está correta.
andyb
Entendo. Não acho que o código ASCII seja "mágico" quando falamos sobre um CHAR porque esse é o número real mantido pelo CHAR. Um char é um número. Se você inspecionasse a memória theQuote, veria 34.
HackSlash