Floatまたはdoubleのような短い方法でバイト変数を宣言する方法があるのだろうか? 5f
および5d
。確かにbyte x = 5
が、ローカル変数にvar
を使用する場合、それは少し重要ではありません。
ByteのMSDNリファレンス および C#4.0言語仕様 には、リテラルサフィックスについての言及はありません。 C#のリテラル接尾辞は、整数と実数の場合のみ次のとおりです。
_u = uint
l = long
ul = ulong
f = float
m = decimal
d = double
_
var
を使用する場合は、var y = (byte) 5
のように常にバイトをキャストできます。
実際には関連していませんが、C#7では、新しいバイナリプレフィックスが_0b
_で導入されました。これは、数値がバイナリ形式であることを示しています。それでも、バイトにするための接尾辞はありません、例:
_var b = 0b1010_1011_1100_1101_1110_1111; //int
_
そこで、昨年秋にVB=にバイナリリテラルを追加し、初期テスターから同様のフィードバックを得ました。VBのバイトにサフィックスを追加することにしました。SB(符号付きバイト用)およびUB (符号なしバイトの場合)BとSBだけではない理由は2つあります。
1つ目は、16進数(0xFFBとはどういう意味ですか)で記述している場合や、その解決策、または 'B'以外の文字( 'Y'が考慮され、F#がこれを使用します)である場合、Bサフィックスはあいまいですデフォルトが符号付きか符号なしかを思い出すことができます-.NETバイトはデフォルトで符号なしですので、BとSBを選択するのは理にかなっていますが、他のすべてのサフィックスはデフォルトで署名されるため、Bを選択する他のタイプのサフィックスと一致しますUB。最後に、明確なSBとUBを選びました。 -アンソニーD.グリーン、
https://roslyn.codeplex.com/discussions/542111
どうやら、彼らはVB.NETでこの動きをしたようです(今すぐリリースされないかもしれません)、そして彼らはそれをC#のroslynに実装するかもしれません-あなたがそれがあなたが望むものであると思うなら、あなたの投票をしてください。また、可能な構文を提案する機会があります。
this MSDNページから、あなたの唯一のオプションは、明示的にキャストする(var x = (byte)5
)か、var
...の使用をやめることです。
[〜#〜] msdn [〜#〜] に従って、10進、16進、または2進リテラルを使用してバイトを宣言できます。
// decimal literal
byte x = 5;
// hex decimal literal
byte x = 0xC5;
// binary literal
byte x = 0b0000_0101;