25 votes

Quel est le suffixe (caractère de type) pour les constantes numériques "Byte" en VB.NET ?

Juste par curiosité :

Je sais que je peux indiquer au compilateur si je veux qu'une valeur soit interprétée comme un certain type numérique, par exemple comme un Integer (32 bits signé), en ajoutant un "I" (caractère de type) à la valeur constante :

Private Function GetTheAnswerAsInteger() As Integer

   Return 42I

End Function

Il y a aussi "S" pour Short, "D" pour Decimal, etc.

Mais quel est le suffixe pour Byte ? Indice : ce n'est pas le plus évident "B"...

31voto

Jon Skeet Points 692016

Il n'y en a pas. Si vous devez faire la distinction entre un entier et un octet (par exemple, pour appeler une surcharge appropriée) pour une constante, vous devez effectuer un cast.

(La même chose est vraie en C#, d'ailleurs).

MSDN fournit une confirmation :

B caractère de type identificateur.

Il y a aussi un liste des caractères de type et des suffixes littéraux .

6voto

Erti-Chris Eelmaa Points 5165

Ainsi, nous avons ajouté des littéraux binaires dans VB l'automne dernier et avons obtenu des simulations des premiers testeurs. Nous avons décidé d'ajouter un suffixe pour byte en VB. Nous avons Nous avons choisi SB (pour octet signé) et UB (pour octet non signé). La raison pour laquelle il ne s'agit pas simplement de B et SB est double.

D'une part, le suffixe B est ambigu si vous (que signifie 0xFFB ?) et même si nous avions une solution pour cela, ou un autre caractère autre que 'B' ('Y' a été envisagé, F# l'utilise), personne ne pourrait se personne ne pouvait se souvenir si la valeur par défaut était signée ou non signée. non signés par défaut, il serait donc logique de choisir B et SB mais tous les autres s mais tous les autres suffixes sont signés par défaut, ce qui serait cohérent. avec les autres suffixes de type de choisir B et UB. Finalement, nous avons opté pour SB et UB sans ambiguïté. -- Anthony D. Green,

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

Il a été intégré à la prochaine version de VB.NET, et c'est ainsi qu'il fonctionnera :

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

5voto

Yuriy Galanter Points 21066

Cette réponse ne fournit pas vraiment de suffixe, mais elle s'en rapproche le plus.

Si vous définissez une méthode d'extension comme

Imports System.Runtime.CompilerServices

Module IntegerExtensions

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

End Module

Vous pouvez l'utiliser comme ceci :

Private Function GetTheAnswerAsByte() As Byte

   Return 42.B

End Function

3voto

arul Points 10719

Il n'y a pas d'octet littéral dans .NET.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X