¿Cuáles son las diferencias funcionales más importantes entre C # y VB.NET?

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

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

  • C # tiene métodos anónimos VB tiene estos ahora, también
  • C # tiene la palabra clave yield (bloques de iteración ) VB11 agregó esto
  • VB admite el enlace implícito tardío (C # tiene un enlace explícito tardío ahora 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 proporcionan las mismas herramientas de refactorización para VB y C #.

En general, las cosas en las que MS se enfoca 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 objective. Probablemente sea una buena idea determinar en qué audiencia se encuentra, ya que determinará qué tipo de herramientas obtendrá de Microsoft.

Este tema ha tenido mucho tiempo de exposición desde que se lanzó .NET 2.0. Vea este artículo de Wikipedia para un resumen legible.

Esto se puede considerar como syntax, pero VB.NET es mayúscula y C # es sensible a mayúsculas y minúsculas .

Esta es una referencia muy completa.

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

Mi respuesta: elige la base en la historia de tus desarrolladores. C # es más como JAVA, y probablemente como C ++. VB.NET fue más fácil para los progtwigdores de VB, pero creo que ya no es un problema, ya que no hay nuevos progtwigdores de .NET procedentes de la antigua VB.

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

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

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

Aparte de la syntax, no mucho más. Ambos comstackn exactamente la misma IL, por lo que puedes comstackr algo como VB y reflejarlo en C #.

La mayoría de las diferencias aparentes son azúcar sintáctico. Por ejemplo, VB parece ser compatible con tipos dynamics, pero en realidad son tan estáticos como C # ‘s – el comstackdor de VB los resuelve.

Visual Studio se comporta de forma diferente con VB que con C #: oculta gran cantidad de funcionalidades, pero agrega comstackción en segundo plano (ideal para proyectos pequeños, acaparamiento de recursos para grandes) y mejor compatibilidad con fragmentos.

Con más y más “magia” de comstackción en C # 3, VB.Net realmente se ha retrasado. Lo único que VB tiene ahora que C # no es la palabra clave handles , y eso es un beneficio debatible.

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

@Luke – VB.Net aún no tiene métodos anónimos, pero ahora admite lambdas.

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

Aunque VB.NET admite try … catch tipo manejo de excepciones, todavía tiene algo similar a ON ERROR de VB6. ON ERROR puede ser objeto de abuso grave, y en la gran mayoría de los casos, intente … la captura 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 último “bash de nuevo” 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_.NET http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

Solo revisa y escribe tus notas sobre eso.

Cuando llega a IL, todo es solo un pedacito. Esa insensibilidad de caso es solo un pase precomstackdor. Pero el consenso general es que vb es más detallado. Si puede escribir c #, ¿por qué no guarda sus ojos y manos y escribe la menor cantidad de código para hacer lo mismo?

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

Scott Hanselman escribió recientemente un interesante artículo que contrasta var y Dim: Back to Basics: var! = Dim

Sí VB.NET solucionó la mayoría de los problemas de VB6 y lo convirtió en un lenguaje OOP apropiado, es decir. Similar en habilidades a C #. Aunque creo que prefiero C #, creo que la antigua construcción VB ON ERROR es útil para manejar los tiempos de espera de interoperabilidad COM. Algo para usar sabiamente, ¡ON ERROR es fácilmente abusado!