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
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.
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.
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.
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.
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) 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).
- 1. ¿Es la palabra clave 'Is' VB.NET lo mismo que Object.ReferenceEquals?
- 2. eliminar y eliminar [] lo mismo en Visual C++?
- 3. Does statemachine y statechart significan lo mismo?
- 4. Message Buses y MOM: ¿lo mismo?
- 5. php \ r y \ n lo mismo?
- 6. jQuery $ (function() {}) y $ (document) .ready lo mismo?
- 7. ¿Son eval() y new Function() lo mismo?
- 8. ¿Están izando y reordenando lo mismo?
- 9. ¿Son tar.gz y tgz lo mismo?
- 10. diferencias IL generado para VB.NET y C#
- 11. Cómo insertar el código CIL en C#
- 12. Learning CIL
- 13. C# y VB.NET - Tratamiento de Estructuras nulos
- 14. CIL, CLS y CTS en .NET
- 15. Desarmar programáticamente CIL
- 16. ¿Por qué Y hace lo mismo que yy?
- 17. Diferencia entre ASP.Net, C# .Net y VB.Net?
- 18. C# aguarden vs continuaciones: ¿no es lo mismo?
- 19. Es Excel VBA el mismo que VB.NET
- 20. es si (variable) lo mismo que si en Objective-C
- 21. Stringbuilder en CIL (MSIL)
- 22. LINQ no lo hace el grupo en VB.Net
- 23. Proyectos VB.Net y C# en 1 Solución
- 24. Diferencia entre sombras (VB.NET) y nuevo (C#)
- 25. estático/Compartido en VB.NET y C# visibility
- 26. C# y VB.Net parámetros de salida
- 27. CIL stack exchange instruction
- 28. C#: ¿Cómo evitar que dos instancias de una aplicación hagan lo mismo al mismo tiempo?
- 29. ¿Cómo simular C++ friend en C# y VB.NET?
- 30. ¿Son codepage 65001 y utf-8 lo mismo?
Tendría que contenerme si alguna vez vi '" "= Nothing" 'en el código – msarchet
@msarchet: En VB.Net, se consideran iguales. – SLaks
Sé que se considera igual, simplemente se ve mal. – msarchet