Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 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
dynamicvengono 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
EaSystem.Span<E> - Da qualsiasi matrice unidimensionale con tipo di elemento
EaSystem.ReadOnlySpan<U>, quandoEha una conversione di covarianza o una conversione di identità aU - Da
System.Span<E>aSystem.ReadOnlySpan<U>, quandoEha una conversione di covarianza o una conversione di identità versoU - Da
System.ReadOnlySpan<E>aSystem.ReadOnlySpan<U>, quandoEha una conversione di covarianza o una conversione di identità versoU - Da
stringaSystem.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.