Убедитесь, что номер приведен правильно в .NET - PullRequest
2 голосов
/ 25 мая 2009

Я знаю, что могу присвоить значение конкретно для float, выполнив

float y = 4.5f;

Я хочу сделать то же самое, за исключением байта. Как мне это сделать? Я проверил документацию MSDN и не могу найти ничего, связанного с этим. Кроме того, как это называется?

Спасибо

[Изменить]

Для ясности код, который я использую, это

byte myByte = a==b?1:0;

и ошибка, которую я получаю

Невозможно неявно преобразовать тип 'int' в «байт?». Явное преобразование существует (вы пропустили актерский состав?)

Решение

byte myByte = (byte)(a==b?1:0);

Ответы [ 5 ]

12 голосов
/ 25 мая 2009

Типы данных byte, sbyte, short и ushort не имеют обозначенных суффиксов. Однако целочисленный литерал может быть назначен переменным этих типов данных и будет неявно преобразован при условии, что значение подходит для хранения в переменной. Просто для записи вот определенные литералы в C #:

uint: U or u
long: L or l
ulong: UL or ul
float: F or f
decimal: M or m
2 голосов
/ 25 мая 2009

Вам не нужен суффикс при определении байта:

   byte b = 1;

Вам просто нужно убедиться, что ваше значение находится в диапазоне от 0 до 255.

MSDN относится к использованию F в качестве «суффикса», заставляя литеральный тип.

См. Следующую статью на C-sharp Online для получения дополнительной информации

2 голосов
/ 25 мая 2009

Согласно этой записи , байт не имеет такого суффикса.

2 голосов
/ 25 мая 2009

Я бы просто использовал приведение.

// Okay
Byte data = (Byte) 57;

// Error (but I don't know if it is a compiler error or a runtime error)
Byte data = (Byte) -17;

Или ввести константу.

// Okay
const Byte foo = 57;
Byte data = foo;

// Compiler Error
const Byte foo = -17;
Byte data = foo;
1 голос
/ 25 мая 2009

Шестнадцатеричная запись:

Байт b = 0xff;

...