il

¿Por qué el compilador de C# traduce esto?= comparación como si fuera una> comparación?

He descubierto por pura casualidad que el compilador de C# convierte este método: static bool IsNotNull(object obj) { re ... j) { return obj > null; // (note: this is not a valid C# expression) } ¿Cómo es que el != se traduce como ">"?

Stackoverflow haciendo boxeo en C#

Tengo estos dos trozos de código en C#: Primero class Program { static Stack<int> S = new Stack<int>(); ... ué, si no hay una sobrecarga significativa de la pila de CIL para el segundo ejemplo, se bloquea "más rápido" que el primero?

¿Por qué el compilador me permite convertir un null a un tipo específico en C#?

Considere este código: var str = (string)null; Cuando escriba el código este es mi IL código: IL_0001: ldnull Y IL t ... sí que se ignoró el lanzamiento de null a string. ¿Por qué el compilador me permite convertir un null a un tipo específico?

IL Instrucciones no expuestas por C#

¿Qué instrucciones IL no están expuestas por C#? Me refiero a instrucciones como sizeof y cpblk - no hay ninguna clase o co ... U2/U4 / U8] Conv_Ovf_[I1/I2/I4/I8/U1/U2/U4 / U8]_Un Ldelem_ [I1/I2/I4/I8/U1/U2/U4/R4 / R8] Stelem_[I1/I2/I4/I8/R4 / R8]

Visualización del código IL generado a partir de una expresión compilada

¿Es posible ver el código IL generado cuando se llama a Compile() en un árbol de expresiones? Considere este ejemplo muy si ... bol de expresiones fue creado y compilado en tiempo de ejecución. ¿Es posible ver el código IL resultante de la compilación?

¿Por qué el compilador de C# emite una instrucción callvirt para una llamada al método GetType ()?

Tengo curiosidad por saber por qué está sucediendo esto. Por favor, lea el ejemplo de código a continuación y el IL correspo ... hay casos en los que el compilador emitirá un callvirt para un método no virtual, esto crea problemas para tipo de seguridad?

Crear método dinámicamente y ejecutarlo

Antecedentes: Quiero definir algunos métodos static en C# , y generar código IL como matriz de bytes, a partir de uno de est ... ipo.MyMethod(Int32 valor1, Int32 valor2) [...] Por favor, ayúdame a averiguar la causa del error, y cómo solucionarlo.

¿Por qué MSFT C# compila de manera diferente un "array to pointer decay" y "address of first element" fijo?

El compilador de c# de.NET (. NET 4.0) compila la instrucción fixed de una manera bastante peculiar. Aquí hay un programa co ... rutas de código en lugar de simplemente usar el código más simple generado para Good? ¿Por qué se implementa de esta manera?

Hay una condición de carrera en este patrón común que se utiliza para prevenir NullReferenceException?

Pregunté este pregunta y tengo este interesante (y un poco desconcertante) respuesta. Daniel afirma en su respuesta (a menos ... al código nativo no eliminar cualquier operación volátil, ni reúne múltiples operaciones volátiles en una sola operación.