En C# Puedo usar default(T)
para obtener el valor predeterminado de un tipo. Necesito obtener el tipo predeterminado en tiempo de ejecución desde System.Type
. ¿Cómo puedo hacer esto?¿Cómo puedo llamar al valor predeterminado (T) con un tipo?
E.g. Algo a lo largo de las líneas de este (que no funciona)
var type = typeof(int);
var defaultValue = default(type);
Poco después de escribir mi pregunta, se me ocurrió 'return Expression. Lambda> (Expression.Convert (Expression.Default (type), typeof (object))). Compile()(); ', pero el tuyo es mucho más agradable. –
GiddyUpHorsey
@Giddy: esa sería una forma muy costosa de hacerlo, ya que estás compilando el árbol de expresiones en IL (y luego JIT tendrá que compilarlo en nativo) en cada invocación. –
Sí, estoy de acuerdo. Por eso no lo estoy usando, y estoy usando la solución de Madgnome en su lugar. Sin embargo, fue el código más corto y más legible, no el rendimiento, lo que me empujó a utilizar el suyo.El rendimiento no es demasiado importante para mi escenario. – GiddyUpHorsey