Подтвердить что ты не робот

Что такое суффикс (символ типа) для числовых констант "Byte" в VB.NET?

Просто из любопытства:

Я знаю, что могу сообщить компилятору, хочу ли я, чтобы значение интерпретировалось как определенный числовой тип, например. как Integer (32-разрядная подпись), таким образом добавляя "I" (тип символа) к постоянному значению:

Private Function GetTheAnswerAsInteger() As Integer

   Return 42I

End Function

Там также "S" для Short, "D" для Decimal и т.д.

Но что такое суффикс для байта? Подсказка: это не очевидный "B"...

4b9b3361

Ответ 1

Нет. Если вам нужно различать целое число и байт (например, чтобы вызвать соответствующую перегрузку) для константы, вам нужно сделать бросок.

(То же самое верно и для С#).

MSDN обеспечивает подтверждение:

Байт не имеет символа буквального типа или идентификатор типа.

Также существует список символов типа и буквенных суффиксов.

Ответ 2

Итак, мы добавили бинарные литералы в VB прошлой осенью и получили аналогичную обратную связь от ранних тестеров. Мы решили добавить суффикс для байта для VB. Мы (для подписанного байта) и UB (для байта без знака). Причина это не только B и SB в два раза.

Во-первых, суффикс B является двусмысленным, если вы пишете в шестнадцатеричном виде (что означает 0xFFB?) и даже если у нас есть решение для этого или другое символ "B" ( "Y" считался, F # использует это) никто не мог помните, было ли значение по умолчанию подписано или без знака -.NET байты без знака по умолчанию, поэтому было бы целесообразно выбрать B и SB, но все другие суффиксы подписаны по умолчанию, поэтому он будет согласован с другими суффиксами типа для выбора B и UB. В итоге мы пошли однозначные SB и UB. - Энтони Д. Грин,

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

Он был интегрирован в предстоящую версию VB.NET, и так он будет работать:

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

Ответ 3

Этот ответ на самом деле не содержит суффикса, но он как можно ближе к нему.

Если вы определяете метод расширения как

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

Ответ 4

В .NET нет литерала байта.