sbyte (Riferimenti per C#)
La parola chiave sbyte indica un tipo integrale che memorizza valori in base alla dimensione e all'intervallo indicati nella seguente tabella.
Digitare |
Intervallo |
Size |
Tipo .NET Framework |
---|---|---|---|
sbyte |
Da -128 a 127 |
Numero intero con segno a 8 bit |
Valori letterali
È possibile dichiarare e inizializzare una variabile sbyte come riportato di seguito:
sbyte sByte1 = 127;
Nella precedente dichiarazione il valore letterale integer 127 viene convertito in modo implicito da int a sbyte. Se il valore letterale integer è esterno all'intervallo consentito per sbyte, viene generato un errore di compilazione.
È necessario utilizzare un cast quando si chiamano metodi di overload. Si considerino, ad esempio, i seguenti metodi di overload che utilizzano parametri sbyte e int.
public static void SampleMethod(int i) {}
public static void SampleMethod(sbyte b) {}
L'utilizzo del cast di sbyte garantisce che venga chiamato il tipo corretto, ad esempio:
// Calling the method with the int parameter:
SampleMethod(5);
// Calling the method with the sbyte parameter:
SampleMethod((sbyte)5);
Conversioni
Si verifica una conversione implicita predefinita da sbyte a short, int, long, float, double o decimal.
Non è possibile convertire in modo implicito in sbyte tipi numerici non letterali che necessitano di maggiore spazio in memoria. Per informazioni sullo spazio necessario per l'archiviazione dei tipi integrali, vedere Tabella dei tipi integrali (Riferimenti per C#). Si considerino, ad esempio, le due variabili sbyte seguenti x e y:
sbyte x = 10, y = 20;
L'istruzione di assegnazione che segue provocherà un errore di compilazione poiché, per impostazione predefinita, l'espressione aritmetica a destra dell'operatore di assegnazione restituisce int.
sbyte z = x + y; // Error: conversion from int to sbyte
Per risolvere il problema, eseguire il cast dell'espressione come nell'esempio seguente:
sbyte z = (sbyte)(x + y); // OK: explicit conversion
È tuttavia possibile utilizzare le seguenti istruzioni, in cui la variabile di destinazione ha dimensioni di archiviazione uguali o superiori:
sbyte x = 10, y = 20;
int m = x + y;
long n = x + y;
Si noti inoltre che non esiste alcuna conversione implicita dai tipi a virgola mobile a sbyte. L'istruzione seguente, ad esempio, genera un errore di compilazione, a meno che non venga utilizzato un cast esplicito:
sbyte x = 3.0; // Error: no implicit conversion from double
sbyte y = (sbyte)3.0; // OK: explicit conversion
Per ulteriori informazioni sulle espressioni aritmetiche con tipi a virgola mobile e tipi integrali, vedere float e double.
Per ulteriori informazioni sulle regole di conversione numerica implicita, vedere Tabella delle conversioni numeriche implicite (Riferimenti per C#).
Specifiche del linguaggio C#
Per ulteriori informazioni, vedere la Specifiche del linguaggio C#. La specifica del linguaggio è la fonte ufficiale per la sintassi e l'utilizzo di C#.
Vedere anche
Riferimenti
Tabella dei tipi integrali (Riferimenti per C#)
Tabella dei tipi incorporati (Riferimenti per C#)
Tabella delle conversioni numeriche implicite (Riferimenti per C#)
Tabella delle conversioni numeriche esplicite (Riferimenti per C#)