Tipi predefiniti (riferimenti per C#)
La tabella seguente elenca i tipi di valore predefiniti di C#:.
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
aSystem.Span<E>
- Da qualsiasi matrice unidimensionale con tipo di elemento
E
aSystem.ReadOnlySpan<U>
, quandoE
ha una conversione di covarianza o una conversione di identità aU
- Da
System.Span<E>
aSystem.ReadOnlySpan<U>
, quandoE
ha una conversione di covarianza o una conversione di identità versoU
- Da
System.ReadOnlySpan<E>
aSystem.ReadOnlySpan<U>
, quandoE
ha una conversione di covarianza o una conversione di identità inU
. - Da
string
aSystem.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.