25

単なる好奇心から:

定数値に "I" (型文字) を追加することで、値を特定の数値型、たとえば Integer (32 ビット符号付き) として解釈するかどうかをコンパイラに伝えることができることはわかっています。

Private Function GetTheAnswerAsInteger() As Integer

   Return 42I

End Function

Short の「S」、Decimal の「D」などもあります。

しかし、 Byte の接尾辞は何ですか? ヒント: 明らかな「B」ではありません...

4

4 に答える 4

31

1つもありません。定数に対して整数とバイトを区別する必要がある場合 (たとえば、適切なオーバーロードを呼び出す場合)、キャストする必要があります。

(ちなみにC#でも同じです。)

MSDN は確認を提供します。

Byte には、リテラル型文字または識別子型文字がありません。

タイプ文字とリテラル接尾辞のリストもあります。

于 2008-10-31T07:50:15.070 に答える
6

そのため、昨年秋に VB にバイナリ リテラルを追加し、初期のテスターから同様のフィードバックを得ました。VB のバイトのサフィックスを追加することにしました。SB (符号付きバイト) と UB (符号なしバイト) に落ち着きました。BやSBだけではない理由は2つあります。

1 つ目は、16 進数で記述している場合 (0xFFB とはどういう意味ですか?)、B サフィックスがあいまいです。そのための解決策があったとしても、または 'B' 以外の文字 ('Y' が考慮され、F# はこれを使用します) はありません。デフォルトが署名されているか署名されていないかを思い出すことができます-.NETバイトはデフォルトで署名されていないため、BとSBを選択することは理にかなっていますが、他のすべてのサフィックスはデフォルトで署名されているため、Bを選択する他のタイプのサフィックスと一致します. UB。最終的に、明確な SB と UB を選択しました。-- アンソニー・D・グリーン

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

これは、今後の VB.NET リリースに統合されており、次のように動作します。

Public Const MyByte As Byte = 4UB;
Public Const MyByte2 As SByte = 4SB;
于 2015-01-04T00:11:24.517 に答える
5

この回答は実際には接尾辞を提供していませんが、可能な限り近いです。

拡張メソッドを次のように定義すると、

Imports System.Runtime.CompilerServices

Module IntegerExtensions

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

End Module

次のように使用できます。

Private Function GetTheAnswerAsByte() As Byte

   Return 42.B

End Function
于 2013-12-20T19:08:49.000 に答える
3

.NET にはバイト リテラルはありません。

于 2008-10-31T07:47:35.760 に答える