Pregunta

Ciertamente existe una diferencia en la sintaxis general, pero ¿qué otras distinciones críticas existen?Hay alguno diferencias, ¿verdad?

¿Fue útil?

Solución

Las comparaciones vinculadas son muy exhaustivas, pero en cuanto a las principales diferencias, señalaría lo siguiente:

  • C# tiene métodos anónimosVB también los tiene ahora
  • C# tiene la palabra clave de rendimiento (bloques iteradores)VB11 añadió esto
  • soportes VB enlace tardío implícito (C# ahora tiene enlace tardío explícito a través de la palabra clave dinámica)
  • VB admite literales XML
  • VB no distingue entre mayúsculas y minúsculas
  • Más fragmentos de código listos para usar para VB
  • Más herramientas de refactorización listas para usar para C#Visual Studio 2015 ahora proporciona las mismas herramientas de refactorización tanto para VB como para C#.

En general, las cosas en las que se centra MS para cada uno varían, porque los dos idiomas están dirigidos a audiencias muy diferentes. Esta publicación de blog tiene un buen resumen de las audiencias objetivo.Probablemente sea una buena idea determinar en qué audiencia se encuentra, porque determinará qué tipo de herramientas obtendrá de Microsoft.

Otros consejos

Este tema ha tenido mucha atención desde que se lanzó .Net 2.0.Mira esto Wikipedia artículo para un resumen legible.

Esto puede considerarse sintaxis, pero VB.NET es caso. ensensible mientras que C# es mayúscula sensible.

Este Es una referencia muy completa.

Como supongo que puedes buscar en Google, no creo que lo que estés buscando sea un enlace a más sitios.

Mi respuesta:Elija basándose en el historial de sus desarrolladores.C# se parece más a JAVA y probablemente a C++.VB.NET era más fácil para los programadores de VB, pero supongo que eso ya no es un problema ya que no hay nuevos programadores de .NET provenientes del antiguo VB.

Mi opinión es que VB es más productivo que C#, parece que siempre está por delante en términos de herramientas de productividad (como Intelisense), y recomendaría VB sobre C# a alguien que pregunte.Por supuesto, alguien que sabe que prefiere C# no preguntará, y C# probablemente sea la opción correcta para él.

Aunque el azúcar de sintaxis en C#3 realmente ha empujado el listón hacia adelante, debo decir que algunas de las cosas de Linq a XML en VB.Net parecen bastante agradables y hacen que el manejo de XML complejo y profundamente anidado sea un poco más tolerable.Solo un poco.

Una diferencia evidente está en cómo manejan los métodos de extensión (Vb.Net en realidad permite algo que C# no permite: pasar el tipo en el que se define el método de extensión como ref): http://blog.gadodia.net/extension-methods-in-vbnet-and-c/

Aparte de la sintaxis, ya no mucho.Ambos se compilan exactamente en el mismo IL, por lo que puedes compilar algo como VB y reflejarlo en C#.

La mayoría de las diferencias aparentes son azúcar sintáctica.Por ejemplo, VB parece admitir tipos dinámicos, pero en realidad son tan estáticos como los de C#: el compilador de VB los descubre.

Visual Studio se comporta de manera diferente con VB que con C#: oculta muchas funciones pero agrega compilación en segundo plano (ideal para proyectos pequeños, acapara recursos para proyectos grandes) y mejor soporte para fragmentos.

Con cada vez más 'magia' del compilador en C#3, VB.Net realmente se ha quedado atrás.Lo único que VB tiene ahora que C# no tiene es el handles palabra clave, y eso tiene un beneficio discutible.

@Tom: eso es realmente útil, pero un poco desactualizado. VB.Net ahora también admite documentos XML con '''

@Luke: VB.Net todavía no tiene métodos anónimos, pero ahora admite lambdas.

En mi opinión, la mayor diferencia es la capacidad de escribir código inseguro en C#.

Aunque VB.NET admite el manejo de excepciones de tipo try...catch, todavía tiene algo similar a ON ERROR de VB6.Se puede abusar gravemente de ON ERROR y, en la gran mayoría de los casos, intentar... atrapar es mucho mejor;pero ON ERROR puede ser útil cuando se manejan operaciones de tiempo de espera COM donde el error puede ser atrapado, decodificado y el "inténtalo de nuevo" final es una simple línea.Puedes hacer lo mismo con try...catch pero el código es mucho más complicado.

Este tema se describe brevemente en wikipedia y harding.

http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Visual_Basic_.NEThttp://www.harding.edu/fmccown/vbnet_csharp_comparison.html

Simplemente repase y tome notas sobre eso.

Cuando llega a Illinois, todo son fragmentos.Esa insensibilidad a mayúsculas y minúsculas es sólo una pasada del precompilador.Pero el consenso general es que vb es más detallado.Si puedes escribir C#, ¿por qué no guardar tus ojos y tus manos y escribir una cantidad menor de código para hacer lo mismo?

Una diferencia evidente está en cómo manejan los métodos de extensión (Vb.Net en realidad permite algo que C# no permite: pasar el tipo en el que se define el método de extensión como ref): http://blog.gadodia.net/extension-methods-in-vbnet-and-c/

Scott Hanselman Recientemente escribí un artículo interesante que contrasta var y Dim: Volver a lo básico:var != Oscuro

Sí, VB.NET solucionó la mayoría de los problemas de VB6 y lo convirtió en un lenguaje OOP adecuado, es decir.Similar en capacidades a C#.Aunque tiendo a preferir C#, encuentro útil la antigua construcción VB ON ERROR para manejar los tiempos de espera de interoperabilidad COM.Sin embargo, algo que se debe usar con prudencia: ¡¡¡EN ERROR se puede abusar fácilmente !!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top