sbyte (Référence C#)

Mise à jour : novembre 2007

Le mot clé sbyte indique un type intégral qui stocke des valeurs comme indiqué dans le tableau ci-dessous.

Type

Portée

Taille

Type .NET Framework

sbyte

-128 à 127

Entier 8 bits signé

System.SByte

Littéraux

Vous pouvez déclarer et initialiser une variable sbyte de la façon suivante :

sbyte sByte1 = 127;

Dans la déclaration précédente, le littéral entier 127 est implicitement converti de type int en type sbyte. Si le littéral entier est en dehors de la plage de valeurs autorisées pour sbyte, une erreur de compilation se produit.

Une conversion doit être utilisée lors de l'appel de méthodes surchargées. Prenez l'exemple suivant de deux méthodes surchargées ayant pour paramètres sbyte et int :

public static void SampleMethod(int i) {}
public static void SampleMethod(sbyte b) {}

Le recours à un cast sbyte permet de garantir que le type correct sera appelé, comme indiqué ci-après :

// Calling the method with the int parameter:
SampleMethod(5);
// Calling the method with the sbyte parameter:
SampleMethod((sbyte)5);

Conversions

Il y a une conversion implicite prédéfinie de sbyte en short, int, long, float, double ou decimal.

Il n'est pas possible de convertir implicitement en sbyte des types numériques non littéraux d'une taille de stockage supérieure (consultez Tableau des types intégraux (Référence C#) pour plus d'informations sur les tailles de stockage des types intégraux). Prenez l'exemple suivant de deux variables sbyte, x et y :

sbyte x = 10, y = 20;

L'instruction d'assignation suivante entraîne une erreur de compilation, car l'expression arithmétique située à droite de l'opérateur d'assignation correspond à int par défaut.

sbyte z = x + y;   // Error: conversion from int to sbyte

Pour résoudre ce problème, effectuez un cast de l'expression comme dans l'exemple suivant :

sbyte z = (sbyte)(x + y);   // OK: explicit conversion

Il est cependant possible d'utiliser les instructions suivantes dans lesquelles la variable de destination possède une taille de stockage égale ou supérieure :

sbyte x = 10, y = 20;
int m = x + y;
long n = x + y;

En outre, il n'y a pas de conversion implicite des types virgule flottante en type sbyte. Par exemple, l'instruction suivante génère une erreur de compilation si aucune conversion explicite n'est spécifiée :

sbyte x = 3.0;         // Error: no implicit conversion from double
sbyte y = (sbyte)3.0;  // OK: explicit conversion

Pour plus d'informations sur les expressions arithmétiques dans lesquelles coexistent des types virgule flottante et des types intégraux, consultez float et double.

Pour plus d'informations sur les règles de conversion numérique implicite, consultez Tableau des conversions numériques implicites (Référence C#).

Spécification du langage C#

Pour plus d'informations, consultez les sections suivantes dans Spécifications du langage C#.

  • 1.3 Types et variables

  • 4.1.5 Types intégraux

Voir aussi

Concepts

Guide de programmation C#

Référence

Mots clés C#

Tableau des types intégraux (Référence C#)

Tableau des types intégrés (Référence C#)

Tableau des conversions numériques implicites (Référence C#)

Tableau des conversions numériques explicites (Référence C#)

SByte

Autres ressources

Référence C#