Estoy escribiendo una pequeña aplicación de tejido IL utilizando Mono.Cecil, que me obliga a manipular el conjunto de destino en un nivel IL.
Mi pregunta es bastante simple, pero todavía encuentro el asunto muy confuso. ¿Cuál es la diferencia práctica entre el ldfld
y ldflda
¿instrucciones?
He consultado con msdn, y parece que mientras ldfld
recupera el valor del campo, ldflda
obtiene la dirección del campo. Está bien ... pero ¿qué significa esto? Primero pensé que el primero se usa para los tipos de valor (y cadena), y el último para los tipos de referencia, pero he compilado un fragmento de C # y lo he comprobado en Reflector, y me ha demostrado que estaba equivocado.
No he podido encontrar ningún patrón distintivo cuando el compilador de C # emite ldflda
en lugar de ldfld
, y mis búsquedas no revelaron ningún artículo que pudiera explicar esto. Entonces cuando usar ldflda
en lugar de ldfld
?
Cualquier ayuda sería muy apreciada.