sbyte (справочник по C#)
Ключевое слово sbyte обозначает целочисленный тип данных, в котором хранятся значения, размер и диапазон которых приведен в следующей таблице.
Type |
Диапазон |
Размер |
Тип платформы .NET Framework |
---|---|---|---|
sbyte |
От -128 до 127 |
8-разрядное знаковое целое число |
Литералы
Переменную типа sbyte можно объявить и инициализировать следующим образом:
sbyte sByte1 = 127;
В приведенном выше объявлении целочисленный литерал 127 неявным образом преобразуется из типа int в тип sbyte. Если целочисленный литерал выходит за пределы диапазона значений типа sbyte, то происходит ошибка компиляции.
При вызове перегруженных методов необходимо использовать приведение типов. Рассмотрите, например, следующие перегруженные методы, в которых используются параметры типов sbyte и int:
public static void SampleMethod(int i) {}
public static void SampleMethod(sbyte b) {}
Использование приведения типа sbyte гарантирует вызов метода правильного типа, например:
// Calling the method with the int parameter:
SampleMethod(5);
// Calling the method with the sbyte parameter:
SampleMethod((sbyte)5);
Преобразования
Существует предопределенное преобразование типа sbyte в типы short, int, long, float, double и decimal.
Существует возможность преобразовать неявным образом не являющиеся литералами числовые типы большего размера при хранении в тип sbyte (сведения о размере целочисленных типов при хранении см. в разделе Таблица целых типов (Справочник по C#)). Рассмотрим, например, следующие две переменные переменные x и y типа sbyte:
sbyte x = 10, y = 20;
Следующая инструкция назначения приведет к ошибке компиляции, потому что арифметическое выражение, расположенное справа от оператора назначения, по умолчанию оценивается как имеющее тип int.
sbyte z = x + y; // Error: conversion from int to sbyte
Для устранения этой проблемы нужно привести тип этого выражения, как показано в следующем примере:
sbyte z = (sbyte)(x + y); // OK: explicit conversion
Тем не менее, существует возможность использовать следующие инструкции, в которых переменная назначения имеет такой же или больший размер при хранении:
sbyte x = 10, y = 20;
int m = x + y;
long n = x + y;
Обратите внимание, что неявного преобразования типов с плавающей запятой в тип sbyte не существует. Например, следующая инструкция приводит к ошибке компилятора, если не выполнить явное приведение типов:
sbyte x = 3.0; // Error: no implicit conversion from double
sbyte y = (sbyte)3.0; // OK: explicit conversion
Сведения об арифметических выражениях, в которых одновременно используются переменные типов с плавающей запятой и целочисленных типов, см. в разделе float и double.
Дополнительные сведения о правилах выполнения неявных числовых преобразований см. в разделе Таблица неявных числовых преобразований (Справочник по C#).
Спецификация языка C#
Дополнительные сведения см в Спецификация языка C#. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.
См. также
Ссылки
Таблица целых типов (Справочник по C#)
Таблица встроенных типов (Справочник по C#)
Таблица неявных числовых преобразований (Справочник по C#)
Таблица явных числовых преобразований (Справочник по C#)
Основные понятия
Руководство по программированию на C#