2011-03-14 14 views
5

Cuando construyo mi aplicación .NET, ¿qué contendrá el ensamblaje? CIL? Y la segunda pregunta, al hacer lo mismo en diferentes languges .NET, ¿el CIL será exactamente el mismo o el mismo en términos de similitud que funciona exactamente de la misma manera? Gracias¿Visualizarán VB.NET y C# CIL lo mismo?

Respuesta

6

No, no serán lo mismo.
VB.Net utiliza métodos de ayuda en Microsoft.VisualBasic.dll en lugar de muchas instrucciones de IL para lograr la semántica de VB.
Esto incluye igualdad ("" = Nothing), ciertas operaciones de cadena, y no recuerdo qué más.

+0

Tendría que contenerme si alguna vez vi '" "= Nothing" 'en el código – msarchet

+0

@msarchet: En VB.Net, se consideran iguales. – SLaks

+1

Sé que se considera igual, simplemente se ve mal. – msarchet

2

No puede garantizar que VB.Net y C# se reduzcan a la misma IL, pero siempre que haya escrito rutinas funcionalmente idénticas, la IL podría producir el mismo resultado.

1

Para muchos métodos, el resultado compilado (CIL) será el mismo.

Sin embargo, hay construcciones en ambos idiomas que se resuelven de manera diferente, o simplemente no es posible. Esto nunca puede dar como resultado las mismas instrucciones.

1

Todos los idiomas están basados ​​en .net compilar a ILCode (Idioma Intermedio). El ILCode resultante será el mismo si se hace de la misma manera, por lo que, por ejemplo, el acceso de los miembros a un objeto siempre será el mismo. Sin embargo, hay funciones que no tienen representaciones en otros idiomas, por lo que es posible que ILCode no se pueda expresar en ese idioma, ya que utiliza una función que no está disponible en ese idioma. Sin embargo, hacer referencia al ensamblado sigue siendo posible.

1

Si el código funciona de la misma manera, luego de bloquear los errores del compilador puede garantizar que el IL generado funcionará de la misma manera.

Sin embargo, le corresponde al compilador cómo implementa su código, y como VB y C# usan compiladores diferentes, no hay garantía de que hayan implementado su código como el mismo IL.

1

1) Sí, todas las aplicaciones .NET se compilan a CIL

2), No, la IL no siempre son exactamente los mismos entre diferentes lenguajes .NET. Es probable que sean similares para las construcciones de código fuente similares, pero cada idioma tiene diferencias sutiles en la forma en que se implementan las cosas, por lo que IL parece ligeramente diferente (pero a menudo se comporta de forma relativamente similar).