Qual è il suffisso (carattere di tipo) per le costanti numeriche "Byte" in VB.NET?

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

  •  05-07-2019
  •  | 
  •  

Domanda

Solo per curiosità:

So di poter dire al compilatore se voglio che un valore venga interpretato come un certo tipo numerico, ad es. come intero (con segno a 32 bit), in questo modo aggiungendo un "I" (carattere carattere) al valore costante:

Private Function GetTheAnswerAsInteger() As Integer

   Return 42I

End Function

C'è anche " S " per Short, "D" per Decimale, ecc.

Ma qual è il suffisso per Byte ? Suggerimento: non è quello ovvio "B" ...

È stato utile?

Soluzione

Non ce n'è uno. Se devi distinguere tra un numero intero e un byte (ad es. Per chiamare un sovraccarico appropriato) per una costante, devi eseguire il cast.

(Lo stesso vale in C #, comunque.)

MSDN fornisce la conferma:

  

Il byte non ha caratteri di tipo letterale o   carattere tipo identificatore.

Esiste anche un elenco di caratteri di tipo e suffissi letterali .

Altri suggerimenti

  

Quindi, abbiamo aggiunto letterali binari in VB lo scorso autunno e abbiamo ottenuto un feedback simile   dai primi tester. Abbiamo deciso di aggiungere un suffisso per byte per VB. Noi   impostato su SB (per byte con segno) e UB (per byte senza segno). La ragione   non è solo B e SB è duplice.

     

Uno, il suffisso B è ambiguo se stai scrivendo in formato esadecimale (cosa   significa 0xFFB?) e anche se avessimo una soluzione per questo o per un altro   carattere di "B" (considerato "Y", F # lo usa) che nessuno poteva   ricorda se l'impostazione predefinita era firmata o non firmata - lo sono i byte .NET   non firmato per impostazione predefinita, quindi avrebbe senso scegliere B e SB ma tutti   gli altri suffissi sono firmati per impostazione predefinita, quindi sarebbe coerente   con suffissi di altro tipo per selezionare B e UB. Alla fine abbiamo scelto   SB e UB non ambigui.   - Anthony D. Green,

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

È stato integrato alla prossima versione di VB.NET, ed è così che funzionerà:

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

Questa risposta non fornisce davvero un suffisso, ma è il più vicino possibile.

Se si definisce un metodo di estensione come

Imports System.Runtime.CompilerServices

Module IntegerExtensions

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

End Module

Puoi usarlo in questo modo:

Private Function GetTheAnswerAsByte() As Byte

   Return 42.B

End Function

Non c'è letterale byte in .NET.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top