Formazione
Modulo
Scegliere il tipo di dati corretto nel codice C# - Training
Scegli il tipo di dati corretto per il codice da diversi tipi di base usati in C#.
Questo browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
.NET supporta una gamma di primitive intere e a virgola mobile numeriche, nonché:
.NET supporta tipi interi a 8, 16, 32, 64 e 128 bit con o senza segno, elencati nelle tabelle seguenti:
Tipi interi con segno
Type | Dimensioni (in byte) | Valore minimo | Valore massimo |
---|---|---|---|
System.Int16 | 2 | -32,768 | 32.767 |
System.Int32 | 4 | -2,147,483,648 | 2,147,483,647 |
System.Int64 | 8 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
System.Int128 | 16 | −170,141,183,460,469,231,731,687,303,715,884,105,728 | 170,141,183,460,469,231,731,687,303,715,884,105,727 |
System.SByte | 1 | -128 | 127 |
System.IntPtr (nel processo a 32 bit) | 4 | -2,147,483,648 | 2,147,483,647 |
System.IntPtr (nel processo a 64 bit) | 8 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
Tipi interi senza segno
Type | Dimensioni (in byte) | Valore minimo | Valore massimo |
---|---|---|---|
System.Byte | 1 | 0 | 255 |
System.UInt16 | 2 | 0 | 65.535 |
System.UInt32 | 4 | 0 | 4,294,967,295 |
System.UInt64 | 8 | 0 | 18,446,744,073,709,551,615 |
System.UInt128 | 16 | 0 | 340,282,366,920,938,463,463,374,607,431,768,211,455 |
System.UIntPtr (nel processo a 32 bit) | 4 | 0 | 4,294,967,295 |
System.UIntPtr (nel processo a 64 bit) | 8 | 0 | 18,446,744,073,709,551,615 |
Ogni tipo integer supporta un set di operatori aritmetici standard. La classe System.Math fornisce metodi per un set più ampio di funzioni matematiche.
È anche possibile operare sui singoli bit di un valore Integer usando la System.BitConverter classe.
Nota
I tipi integer senza segno non sono conformi a CLS. Per altre informazioni, vedere Indipendenza dal linguaggio e componenti indipendenti dal linguaggio.
La struttura System.Numerics.BigInteger è un tipo immutabile che rappresenta un integer arbitrariamente grande il cui valore in teoria non ha limiti inferiori o superiori. I metodi del tipo BigInteger sono strettamente paralleli a quelli di altri tipi integrali.
.NET include i tipi a virgola mobile seguenti:
Type | Dimensioni (in byte) | Intervallo approssimativo | Primitiva? | Note |
---|---|---|---|---|
System.Half | 2 | ±65504 | No | Introdotto in .NET 5 |
System.Single | 4 | ±3.4 x 1038 | Sì | |
System.Double | 8 | ±1.7 × 10308 | Sì | |
System.Decimal | 16 | ±7.9228 x 1028 | No |
I tipi Half, Single e Double supportano valori speciali che rappresentano un valore non numerico e infinito. Ad esempio, il tipo Double fornisce questi valori: Double.NaN, Double.NegativeInfinity e Double.PositiveInfinity. Per testare questi valori speciali, è necessario usare i metodi Double.IsNaN, Double.IsInfinity, Double.IsPositiveInfinity e Double.IsNegativeInfinity.
Ogni tipo a virgola mobile supporta un set di operatori aritmetici standard. La classe System.Math fornisce metodi per un set più ampio di funzioni matematiche. .NET core 2.0 e versioni successive include la classe System.MathF, che fornisce metodi che accettano argomenti del tipo Single.
È anche possibile operare sui singoli bit dei valori Double, Single e Half usando la classe System.BitConverter. La struttura System.Decimal dispone di metodi specifici, Decimal.GetBits e Decimal(Int32[]), che consentono di operare sui singoli bit di un valore decimale, nonché di un set di metodi specifici per l'esecuzione di altre operazioni matematiche.
I tipi Double, Single e Half sono destinati a essere usati per valori imprecisi per natura, ad esempio la distanza tra due stelle, e per applicazioni in cui non è necessario un livello elevato di precisione e gli errori di arrotondamento non devono essere minimi. Per i casi in cui è necessaria una maggiore precisione e gli errori di arrotondamento devono essere minimi, usare il tipo System.Decimal.
Nota
Il tipo Decimal non elimina la necessità di arrotondamento. Piuttosto, riduce al minimo gli errori dovuti all'arrotondamento.
La struttura System.Numerics.Complex rappresenta un numero complesso, ovvero un numero costituito da una parte numerica reale e una parte numerica immaginaria. Supporta un set standard di operatori aritmetici, di confronto, di uguaglianza, di conversione esplicita e di conversione implicita, oltre che metodi matematici, algebrici e trigonometrici.
Lo spazio dei nomi System.Numerics include un set di tipi .NET abilitati per SIMD. Operazioni SIMD (Single Instruction Multiple Data) possono essere eseguite in parallelo a livello hardware. Questo approccio aumenta la velocità effettiva dei calcoli vettorializzati, che sono comuni in app matematiche scientifiche e grafiche.
Tra i tipi .NET abilitati per SIMD sono inclusi i seguenti:
Tipi Vector2, Vector3 e Vector4, che rappresentano i vettori con 2, 3 e 4 valori Single.
Due tipi matrice: Matrix3x2, che rappresenta una matrice 3x2, e Matrix4x4, che rappresenta una matrice 4x4.
Tipo Plane, che rappresenta un piano nello spazio tridimensionale.
Tipo Quaternion, che rappresenta un vettore usato per codificare le rotazioni fisiche tridimensionali.
Tipo Vector<T>, che rappresenta un vettore di un tipo numerico specificato e fornisce un ampio set di operatori che traggono vantaggio dal supporto per SIMD. Il conteggio di un'istanza Vector<T> è fisso, ma il suo valore Vector<T>.Count dipende dalla CPU del computer, in cui viene eseguito codice.
Nota
Il tipo Vector<T> è incluso in .NET Core e .NET 5+, ma non in .NET Framework. Se si usa .NET Framework, installare il pacchetto NuGet System.Numerics.Vectors per ottenere l'accesso a questo tipo.
I tipi abilitati per SIMD vengono implementati in modo da poter essere usati con hardware non abilitato per SIMD in compilatori JIT. Per poter trarre vantaggio dalle istruzioni SIMD, le app a 64 bit devono essere eseguite dal runtime che usa il compilatore RyuJIT, che è incluso in .NET Core e in .NET Framework 4.6 e versioni successive. Aggiunge il supporto per SIMD quando i processori di destinazione sono a 64 bit.
Per altre informazioni, vedere Usare tipi numerici con accelerazione SIMD.
Feedback su .NET
.NET è un progetto di open source. Selezionare un collegamento per fornire feedback:
Formazione
Modulo
Scegliere il tipo di dati corretto nel codice C# - Training
Scegli il tipo di dati corretto per il codice da diversi tipi di base usati in C#.