Skip to main content
The sbyte keyword in C# is a built-in value type that serves as an alias for the .NET System.SByte structure. It represents an 8-bit (1-byte) signed integer, utilizing two’s complement binary representation to store both positive and negative whole numbers.

Technical Specifications

  • Memory Size: 8 bits (1 byte).
  • Sign Bit: The most significant bit (MSB) denotes the sign (0 for positive, 1 for negative).
  • Minimum Value: -128 (sbyte.MinValue).
  • Maximum Value: 127 (sbyte.MaxValue).
  • Default Value: 0.
  • CLS Compliance: sbyte is not Common Language Specification (CLS) compliant. The CLS-compliant alternative is short (System.Int16).

Syntax and Initialization

Type Conversions

Implicit Conversions An sbyte can be implicitly converted to any larger signed integral type or any floating-point type. These are widening conversions where the compiler guarantees no data loss or precision degradation: short, int, long, float, double, decimal.
Explicit Conversions Converting an sbyte to an unsigned type or an incompatible type requires an explicit cast. These are narrowing conversions or sign-boundary crossings that risk overflow, underflow, or data loss: byte, ushort, uint, ulong, char.

Literal Assignment

C# does not possess a dedicated literal suffix for the sbyte type. Integer literals are evaluated as int by the compiler. If an integer literal falls within the -128 to 127 range, the compiler allows implicit assignment to an sbyte variable. If the literal exceeds this range, it triggers a compile-time error.
Tired of Poor C# Skills? Fix That With Deep Grasping!Learn More