Condividi tramite


Tipi predefiniti (riferimenti per C#)

La tabella seguente elenca i tipi di valore predefiniti di C#:.

Parola chiave del tipo C# Tipo .NET
bool System.Boolean
byte System.Byte
sbyte System.SByte
char System.Char
decimal System.Decimal
double System.Double
float System.Single
int System.Int32
uint System.UInt32
nint System.IntPtr
nuint System.UIntPtr
long System.Int64
ulong System.UInt64
short System.Int16
ushort System.UInt16

La tabella seguente elenca i tipi di riferimento incorporati di C# :

Parola chiave del tipo C# Tipo .NET
object System.Object
string System.String
delegate System.Delegate
dynamic System.Object

Nelle tabelle precedenti, la parola chiave del tipo C# della colonna sinistra (ad eccezione di delegate e dinamica ) è un alias per il tipo .NET corrispondente. Sono intercambiabili. Ad esempio, le dichiarazioni seguenti dichiarano variabili dello stesso tipo:

int a = 123;
System.Int32 b = 123;

Il tipo di dynamic è simile a object. Le differenze principali sono:

  • Le operazioni su un'espressione dynamic vengono associate in fase di esecuzione, non in fase di compilazione.
  • Non è possibile usare new dynamic().
  • Non è possibile derivare un tipo dal tipo dynamic.

La parola chiave delegate dichiara un tipo derivato da System.Delegate. Il tipo System.Delegate è un tipo astratto.

La parola chiave void rappresenta l'assenza di un tipo. Si utilizza come tipo di ritorno di un metodo che non restituisce un valore.

Il linguaggio C# include regole specializzate per i tipi System.Span<T> e System.ReadOnlySpan<T>. Questi tipi non vengono classificati come tipi predefiniti, perché non esistono parole chiave C# che corrispondono a questi tipi. Il linguaggio C# definisce conversioni implicite dai tipi di matrice e dal tipo stringa a Span<T> e ReadOnlySpan<T>. Queste conversioni integrano i tipi Span in scenari di programmazione più naturali. Le conversioni seguenti vengono definite come conversioni di intervalli impliciti:

  • Da qualsiasi matrice unidimensionale con tipo di elemento E a System.Span<E>
  • Da qualsiasi matrice unidimensionale con tipo di elemento E a System.ReadOnlySpan<U>, quando E ha una conversione di covarianza o una conversione di identità a U
  • Da System.Span<E> a System.ReadOnlySpan<U>, quando E ha una conversione di covarianza o una conversione di identità verso U
  • Da System.ReadOnlySpan<E> a System.ReadOnlySpan<U>, quando E ha una conversione di covarianza o una conversione di identità in U.
  • Da string a System.ReadOnlySpan<char>

Il compilatore non ignora mai alcuna conversione definita dall'utente in cui esiste un conversione implicita dell' intervallo. Le conversioni implicite dell'intervallo possono essere applicate al primo argomento dei metodi di estensione , il parametro con il modificatore this. Le conversioni implicite dell'intervallo non vengono considerate per le conversioni dei gruppi di metodi.

Vedere anche