Je me demande s’il existe un moyen de déclarer une variable d’octet de la même manière que float ou double? Je veux dire 5f
et 5d
. Bien sûr, je pourrais écrire byte x = 5
, mais c'est un peu sans importance si vous utilisez var
pour les variables locales.
Il n'y a aucune mention de suffixe littéral sur le référence MSDN pour Byte ainsi que dans le spécification de langage C # 4. . Les seuls suffixes littéraux en C # concernent les nombres entiers et réels, comme suit:
u = uint
l = long
ul = ulong
f = float
m = decimal
d = double
Si vous voulez utiliser var
, vous pouvez toujours convertir l'octet comme dans var y = (byte) 5
Bien que cela ne soit pas vraiment lié, un nouveau préfixe binaire a été introduit en C # 7 0b
, Qui indique que le nombre est au format binaire. Il n’existe toujours pas de suffixe pour en faire un octet, par exemple:
var b = 0b1010_1011_1100_1101_1110_1111; //int
Nous avons donc ajouté des littéraux binaires dans VB l’automne dernier) et obtenu les mêmes commentaires des premiers testeurs. Nous avons décidé d’ajouter un suffixe pour byte pour VB. Nous avons opté pour SB (pour octets signés) et UB. (pour l'octet non signé) La raison pour laquelle il n'y a pas que B et SB est double.
Premièrement, le suffixe B est ambigu si vous écrivez en hexadécimal (que signifie 0xFFB?) Et même si nous avions une solution pour cela, ou un autre caractère que 'B' ('Y' a été considéré, F # l'utilise) non on pourrait se souvenir si la valeur par défaut était signée ou non signée - les octets .NET étant non signés par défaut, il serait donc judicieux de choisir B et SB, mais tous les autres suffixes sont signés par défaut; il serait donc cohérent avec les autres suffixes de types pour choisir B et UB. En fin de compte, nous avons opté pour un SB et un UB sans ambiguïté. - Anthony D. Green,
https://roslyn.codeplex.com/discussions/542111
Apparemment, il semble qu'ils aient effectué ce mouvement dans VB.NET (il se peut que leur version ne soit pas publiée maintenant), et ils pourraient l'implémenter dans roslyn pour C # - allez donner votre vote, si vous pensez que c'est quelque chose que vous souhaitez. Vous auriez également la possibilité de proposer une syntaxe possible.
Depuis this page MSDN, il semblerait que vos seules options soient de convertir explicitement (var x = (byte)5
), ou d’arrêter d’utiliser var
...
Selon MSDN vous pouvez déclarer un octet en utilisant un littéral décimal, hexadécimal ou binaire.
// decimal literal
byte x = 5;
// hex decimal literal
byte x = 0xC5;
// binary literal
byte x = 0b0000_0101;