Что такое суффикс (тип символа) для & # 8220; Байта & # 8221; числовые константы в VB.NET?

StackOverflow https://stackoverflow.com/questions/252817

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

Private Function GetTheAnswerAsInteger() As Integer

   Return 42I

End Function

Там также есть "S" для краткости "D" для десятичной дроби и т. д.

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

Это было полезно?

Решение

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

(Кстати, то же самое относится и к C #.)

MSDN предоставляет подтверждение:

  

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

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

Другие советы

  

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

Во-первых, суффикс B неоднозначен, если вы пишете в шестнадцатеричном формате (что   означает 0xFFB?) и даже если бы у нас было решение для этого, или другое   символ «B» (считалось «Y», F # использует это), никто не мог   помните, было ли значение по умолчанию подписано или без знака - байты   по умолчанию без знака, так что имеет смысл выбрать 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;

В этом ответе нет суффикса, но он настолько близок, насколько это возможно.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top