Se ho:C# - sono parametri dinamici Boxed
void Foo(dynamic X) {
}
E poi:
Foo(12);
Would 12 ottenere inscatolato? Non riesco a immaginarlo, vorrei solo chiedere agli esperti.
Se ho:C# - sono parametri dinamici Boxed
void Foo(dynamic X) {
}
E poi:
Foo(12);
Would 12 ottenere inscatolato? Non riesco a immaginarlo, vorrei solo chiedere agli esperti.
Sì, lo sarà.
Sotto il cofano, un tipo dynamic
è solo un object
con alcuni meta-dati, così valore tipi otterrà inscatolato quando messo in una variabile, un campo o parametro di tipo dynamic
.
Il metodo sarà effettivamente essere compilato come questo:
void Foo([Dynamic] object X)
{
}
Leggi di più riguardo il DynamicAttribute here.
IL codice definendolo:
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
.maxstack 8
L_0000: nop
L_0001: ldc.i4.s 12
L_0003: box int32
L_0008: call void ConsoleApplication13.Program::Foo(object)
L_000d: nop
L_000e: ret
}
Ho avuto una sensazione di affondamento che sarebbe stata la risposta. Grazie. –
Sì. Un tipo di valore deve essere inserito in una casella per poter digitare il controllo.
Sì!
Dato che è un tipo di valore, sarà inserito in una scatola.
Perché immagini che non sarebbe? Come immagina che il runtime stia memorizzando un valore * di tipo * in fase di compilazione sconosciuto se non come un oggetto? (Questa non è una domanda retorica, mi interessa sapere perché le intuizioni delle persone li portano a credere a cose false sulle caratteristiche del linguaggio in modo che possiamo provare a progettare funzioni migliori in futuro.) –
Sei nella squadra C# ?? Non era un'ipotesi giustificata da parte mia. Con tutte le straordinarie funzionalità che sono state aggiunte a C#, è facile a volte dimenticare che C# è ancora un linguaggio tipizzato staticamente, quindi come potrebbe * not * essere oggetto sotto le copertine. Se sei nel team C#, quindi grazie per le espressioni lambda. La migliore caratteristica del linguaggio di sempre. –
@Adam: prego. Mi è piaciuto molto implementare espressioni lambda e sono contento che ti stia divertendo ad usarli! –