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 maggior parte delle parole chiave di tipo C# dalla colonna sinistra sono 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 delegate parola chiave è una parola chiave di tipo riferimento predefinita che dichiara un tipo derivato da System.Delegate. A differenza delle altre parole chiave di tipo predefinite, delegate non è un alias per un tipo .NET specifico. Dichiara invece tipi personalizzati che derivano dal tipo astratto System.Delegate . Analogamente, dynamic rappresenta il comportamento di associazione di runtime anziché essere un alias diretto per un tipo .NET specifico.

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à verso 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 parametro ricevitore dei membri dell'estensione. Il parametro receiver viene specificato dalla extension parola chiave in un membro di estensione. Il parametro receiver è il primo parametro di un metodo di estensione usando il this modificatore . Le conversioni implicite dell'intervallo non vengono considerate per le conversioni dei gruppi di metodi.

Vedere anche