Si tengo:C# - son parámetros dinámicos en caja
void Foo(dynamic X) {
}
Y luego:
Foo(12);
Would 12 consigue en caja? No me puedo imaginar que lo haría, solo me gustaría preguntar a los expertos.
Si tengo:C# - son parámetros dinámicos en caja
void Foo(dynamic X) {
}
Y luego:
Foo(12);
Would 12 consigue en caja? No me puedo imaginar que lo haría, solo me gustaría preguntar a los expertos.
Sí, lo hará.
Debajo del capó, un tipo dynamic
es solo un object
con algunos metadatos, por lo que los tipos de valor se incluirán en cuadros cuando se coloquen en una variable, campo o parámetro del tipo dynamic
.
El método en realidad será compilado como esto:
void Foo([Dynamic] object X)
{
}
leer más sobre el DynamicAttribute here.
IL para el código llamándolo:
.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
}
Tuve la sensación de que esa sería la respuesta. Gracias. –
Sí. Un tipo de valor debe estar encuadrado para escribir check.
Sí!
Dado que es un tipo de valor, estará en caja.
¿Por qué te imaginas que no? ¿Cómo imagina que el tiempo de ejecución almacena un valor de * tipo de tiempo de compilación desconocido * si no es como un objeto? (Esta no es una pregunta retórica, estoy interesado en aprender por qué las intuiciones de las personas los llevan a creer cosas falsas sobre las características del lenguaje para que podamos intentar diseñar mejores características en el futuro). –
¿Estás en el equipo de C#? No fue una suposición justificada de mi parte. Con todas las características increíblemente geniales que se han agregado a C#, es fácil olvidar a veces que C# sigue siendo un lenguaje estáticamente tipado, así que ¿cómo podría * no * ser un objeto oculto? Si estás en el equipo C#, entonces gracias por las expresiones lambda. La mejor función de idioma de todos los tiempos. –
@ Adam: De nada. Disfruté mucho la implementación de expresiones lambda y me alegra que estés disfrutando de usarlas. –