In C# Posso usare default(T)
per ottenere il valore predefinito di un tipo. Devo ottenere il tipo predefinito in fase di esecuzione da un System.Type
. Come posso fare questo?Come posso chiamare predefinito (T) con un tipo?
E.g. Qualcosa sulla falsariga di questo (che non funziona)
var type = typeof(int);
var defaultValue = default(type);
Poco dopo aver scritto la mia domanda mi sono inventato 'return Expression. Lambda> (Expression.Convert (Expression.Default (type), typeof (object))). Compile()(); ', ma il tuo è molto più bello. –
GiddyUpHorsey
@Giddy: questo sarebbe un modo molto costoso per farlo, dal momento che stai compilando l'albero delle espressioni in IL (e poi JIT dovrà compilarlo in nativo) ad ogni invocazione. –
Sì, sono d'accordo. Questo è il motivo per cui non lo sto usando e sto usando la soluzione di Madgnome. Anche se, è stato il codice più breve e più leggibile, non la performance, che mi ha spinto a usare la sua.Le prestazioni non sono troppo grandi per il mio scenario. – GiddyUpHorsey