O que é o sufixo (carácter tipo) para “Byte” constantes numéricas em VB.NET?

StackOverflow https://stackoverflow.com/questions/252817

  •  05-07-2019
  •  | 
  •  

Pergunta

Só por curiosidade:

Eu sei que posso dizer ao compilador se eu quiser um valor a ser interpretado como um certo tipo numérico, por exemplo, como Integer (32 bit assinado), dessa maneira acrescentando um "I" (tipo de personagem) para o valor constante:

Private Function GetTheAnswerAsInteger() As Integer

   Return 42I

End Function

Há também "S" para breve, "D" para Decimal, etc.

Mas o que é o sufixo para Byte ? Dica: não é o óbvio "B" ...

Foi útil?

Solução

Não há um. Se você precisa distinguir entre um inteiro e um byte (por exemplo, para chamar uma sobrecarga apropriada) para uma constante, você precisa elenco.

(O mesmo é verdade em C #, por sinal.)

MSDN fornece confirmação:

Byte não tem caráter tipo literal ou identificador de carácter tipo.

Há também um lista de caracteres de tipo e literal sufixos .

Outras dicas

Então, nós adicionamos literais binários em VB no outono passado e obteve um feedback semelhante desde os primeiros testadores. Nós fez decidir adicionar um sufixo para byte de VB. Nós liquidada em SB (por byte assinado) e UB (para byte não assinado). O motivo não é apenas B e SB é duplo.

One, o sufixo B é ambíguo se você estiver escrevendo em hexadecimal (o que não 0xFFB significa?) e até mesmo se tivéssemos uma solução para isso, ou de outra personagem de 'B' ( 'Y' foi considerado, F # utiliza este) ninguém poderia lembre-se o padrão foi assinado ou Não-assinado - .NET bytes são unsigned por padrão, então não faria sentido para escolher B e SB mas todos outros sufixos são assinados por padrão de modo que seria consistente com outros sufixos tipo de pegar B e UB. No final, fomos para inequívoca SB e UB. - Anthony D. Green,

https://roslyn.codeplex.com/discussions/542111

Ele foi integrado à liberação VB.NET próximo, e este é o caminho que vai funcionar:

Public Const MyByte As Byte = 4UB;
Public Const MyByte2 As SByte = 4SB;

Esta resposta não realmente fornecer um sufixo, mas é tão perto quanto ele ganha.

Se você definir um método de extensão como

Imports System.Runtime.CompilerServices

Module IntegerExtensions

    <Extension()> _
    Public Function B(ByVal iNumber As Integer) As Byte
        Return Convert.ToByte(iNumber)
    End Function

End Module

Você pode usá-lo como este:

Private Function GetTheAnswerAsByte() As Byte

   Return 42.B

End Function

Não há nenhuma literal byte em .NET.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top