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?

Respostas:


158

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

Dim theLetterA As Char = "A"C

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.


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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.