pls dimmi in quale versione della parola chiave dinamica viene introdotta? Ho trovato un comportamento strano in VS2010. Ho impostato il framework di destinazione su 3.5. Ma non c'è nessun errore del compilatore. è sufficiente creare una console con un framework di destinazione su .net 3.5 e utilizzare la parola chiave dinamica.problema di parole chiave dinamiche
risposta
La parola chiave dinamica è stata introdotta come parte del linguaggio C# 4.0 - il compilatore viene fornito con VS 2010. È una funzionalità linguistica e non ha bisogno del supporto di runtime (AFAIK) quindi, una volta rispettato il compilatore C# 4.0, non dovrebbe avere alcun problema con versione precedente di runtime. Cambiare il framework di destinazione in VS 2010 non commuta il compilatore (che rimane a 4.0) - riceveremo l'errore del compilatore solo se si utilizza una funzionalità che si rivolge a una nuova libreria o runtime. Ad esempio, in VS 2008, è possibile utilizzare espressioni lambda o parola chiave var per il runtime di destinazione 2.0 ma i metodi di estensione non erano disponibili perché l'attributo di estensione faceva parte dell'assembly 3.5.
MODIFICA: sopra è sbagliato - la parola chiave dinamica richiede Framework 4.0. Non riesco nemmeno a compilare in VS2010 quando target fx è stato modificato in 3.5. Credo che OP potrebbe non aver usato la variabile dinamica più avanti nel codice in modo che l'ottimizzazione del compilatore lo avrebbe rimosso facendolo credere che funzionasse.
Il tipo dinamico è stato introdotto in .Net 4.0.
Il tipo dinamico non è una funzione solo lingua (vale a dire puramente supportato dal compilatore). Si basa sul DLR, che è una funzionalità .Net 4.0 che ha bisogno del supporto della libreria.
Non è possibile utilizzare la rete dinamica e il target .Net 3.5.
ma il motivo per cui non v'è alcun errore del compilatore per 3.5 application in 2010 – saokat
@saokat Devi avere una scoreggia del cervello - non puoi usare dynamic con .Net 3.5. Si prega di verificare le impostazioni e provare e compilare di nuovo. –
@chibacity, so che non posso usare dynamic in 3.5. ma provalo tu stesso Anche io ho impostato supportedRuntime nel file di configurazione. non c'è nessun errore di runtime. – saokat
Quando si utilizza Visual Studio 2010
, il valore predefinito è C# 4.0
.
Non è possibile utilizzare C# 3.0
con Visual Studio 2010
.
Anche se si targetizza .Net Framework 3.5
, verrà utilizzato solo Framework 3.5
e non C# 3.0
.
Ora, dal momento che il valore predefinito è C# 4.0
, è possibile utilizzare dynamic
. Ma per farlo funzionare, devi fare riferimento allo Microsoft.CSharp.dll
. Tale assembly è compilato con v 4.0
. Non è possibile utilizzarlo sotto v 3.5
.
dynamic
ha bisogno di DLR (Dynamic Language Runtime)
che non è disponibile per le precedenti versioni del framework.
Ecco perché quando si tenta di utilizzare dynamic
sotto il progetto Framework 3.5
, sarà fuori di testa.
Quindi, per riassumere, per utilizzare dynamic
, utilizzare Framework 4.0
.
Solo per il gusto della conoscenza: Questa tecnica è chiamata 'Il polimorfismo attraverso l'associazione tardiva'
E 'stato introdotto in .NET Framework 1.1. C# ha acquisito questa funzionalità nella versione 4.0. In Visual Basic era possibile iniziare questo con errori di compilazione.
Public Class Foo
Public Sub Bar()
End Sub
End Class
Public Class Test
Public Sub Test()
Dim o as Object
o = New Foo()
' This will compile and work
o.Bar()
' This will also compile but will throw an exception
o.NonExistingMember()
End Sub
End Class
`
Tutto il trucco è in quanto il tipo di "oggetto" svolto il ruolo del genitore di livello superiore così come ha agito come una dinamica variabile
- 1. Creazione di una clausola dynamic where per le parole chiave dinamiche o utilizzando IQueryable C# Linq
- 2. Parole vuote/nuove parole chiave in Python
- 3. C# Linq Parole chiave?
- 4. argomenti Clojure parole chiave
- 5. Modelli con parole chiave riservate
- 6. Problema di memorizzazione nella cache delle immagini dinamiche di IE?
- 7. Parole chiave riservate - Nascosto? JNLP
- 8. Elasticsearch Parole chiave più utilizzate
- 9. Quali sono le parole chiave per le parole chiave del gruppo di annunci Facebook?
- 10. Uso di parole chiave virtuali in C++
- 11. Percorso di parole chiave in SDL Tridion
- 12. Seleziona una nuova combinazione di parole chiave
- 13. Software per l'estrazione di parole chiave
- 14. CSS problema di allineamento in dinamiche dropdowns del plugin Scelto
- 15. C'è qualche problema con le parole chiave clojure di namespace in uno spazio dei nomi inesistente?
- 16. UITextChecker: problema di memoria con l'apprendimento di migliaia di parole
- 17. vim non evidenzia alcune parole chiave C++
- 18. sulle parole chiave finali statici in Java
- 19. OCMock con il problema delle proprietà dinamiche dei dati principali
- 20. Costruzione dell'albero delle parole chiave usando perl
- 21. ruby search array per le parole chiave
- 22. Come vengono sviluppate le parole chiave?
- 23. Leggi le linee tra due parole chiave
- 24. Nuove parole chiave in Java 9
- 25. Come utilizzare parole chiave personalizzate in SVN
- 26. C# variabili per parole chiave come
- 27. boost :: spirit :: qi parole chiave e identificatori
- 28. Streaming Twitter - posizione E parole chiave
- 29. preprocessore per sostituire le parole chiave javascript
- 30. C# enumerazioni con parole chiave riservate
Il tipo dinamico non è una funzione solo lingua, è supportato dal DLR che è .Net 4. –
Si prega di provare questo per te ... –
@chibacity, avrei ma purtroppo non ho VS 2010 in corrente macchina. Probabilmente hai ragione nel dire che la dipendenza da DLR è necessaria per il funzionamento dinamico - ho creduto diversamente siccome saokat è in grado di usarlo con Fx 3.5. – VinayC