que - ¿Cómo me muevo de Java a C#?
lenguaje de programacion c# caracteristicas (9)
Hice la transición con bastante facilidad usando C # en el trabajo, pero una de las cosas más importantes que hacer es familiarizarte con la API de .NET y algunas de las poderosas técnicas disponibles en C #.
Después de aprender la biblioteca .net, confié en ella mucho más de lo que solía hacerlo, así que aprender sobre las cosas que puede hacer por ti es muy útil. Después de eso, si trabajas con código db, aprende LINQ y también técnicas útiles como lambas, tipos anónimos y delegados.
Conozco Java bien. ¿Qué advertencias y recursos me ayudarán a cruzar al otro lado (C #) tan fácilmente como sea posible?
Sé que una buena respuesta ya ha sido aceptada. Sin embargo, me gustaría hacer una adición ...
Encuentro que aprender un nuevo idioma generalmente implica aprender diferencias sintácticas sutiles ... especialmente cuando se trata de la diferencia entre los idiomas en la familia C / C ++ / Java / C #.
Además de un buen libro de referencia grueso, recomiendo obtener una referencia de bolsillo como C # 3 Pocket Reference de O''Reilly . No lo ayudará con los patrones de diseño, etc., pero proporcionará una referencia muy rápida sobre las diferencias específicas del idioma que está utilizando.
Aquí hay una breve reseña sobre este libro de ese sitio:
C # 3.0 Pocket Reference incluye muchas ilustraciones y ejemplos de código para explicar:
- Funciones nuevas en C # 3.0, como expresiones lambda, tipos anónimos, propiedades automáticas y más
- Todos los aspectos de sintaxis C #, tipos predefinidos, expresiones y operadores
- Crear clases, estructuras, delegados y eventos, enumeraciones, genéricos y restricciones, manejo de excepciones e iteradores
- Las sutilezas del boxeo, la sobrecarga operativa, la covarianza de delegados, la resolución del método de extensión, la reimplementación de interfaz, los tipos anulables y el levantamiento operativo
- LINQ, comenzando con los principios de las secuencias, la ejecución diferida y los operadores de consulta estándar, y terminando con una referencia completa a la sintaxis de las consultas, que incluye múltiples generadores, uniones, agrupaciones y continuaciones de consultas.
- Consumir, escribir y reflexionar sobre atributos personalizados
Utilicé este libro (y el original) para ayudarme a pasar de ser un desarrollador de Java a C #. Mientras estaba aprendiendo, lo mantuve en mi escritorio todo el tiempo y realmente me ayudó.
Aquí hay un enlace que tiene una comparación de sintaxis entre Java y C # (aunque es casi idéntico, hay algunas diferencias).
http://www.harding.edu/fmccown/java1_5_csharp_comparison.html
Consejo más importante: vaya con las convenciones de nomenclatura de .NET desde el principio. De esa forma, constantemente se le recordará en qué idioma se encuentra. (Suena tonto, pero realmente es útil.) Acepte las expresiones idiomáticas del idioma lo más posible.
Hay varios libros específicamente para personas en su situación: busque "C # for Java" en Amazon y obtendrá muchos éxitos. Vale la pena leerlo cuidadosamente para asegurarte de que no supongas que las cosas funcionarán igual en C # que en Java. (Por ejemplo, en C #, los inicializadores de variables de instancia se ejecutan antes que el cuerpo constructor de la clase base, en Java ocurren después. Las cosas sutiles como esta pueden tardar un tiempo en aprenderse, y son fáciles de detectar si se está descremando).
Si vas a usar C # 3, obtendría un libro que definitivamente lo cubre, todo en C # 3 será nuevo para ti. Clavija gratuita: mi propio libro ( C # en profundidad ) cubre C # 2 y 3, pero supone que ya conoces C # 1. (En otras palabras, no será suficiente por sí solo, pero puede que quieras como un "segundo" libro.)
La sintaxis del lenguaje es muy similar, por lo que solo debería leer una pequeña referencia de la sintaxis de C #. Como un libro simple (para programadores experimentados) o tal vez wikipedia ( http://en.wikipedia.org/wiki/Comparison_of_Java_and_C_Sharp ) dirá lo suficiente.
La mayor diferencia es la biblioteca: los sitios web de Asp.Net son totalmente diferentes de los servlets de Java.
¡No lea mucho, solo comience a programar!
Vea este excelente artículo sobre C # desde la perspectiva de un desarrollador de Java . Tiene varias ideas sobre las cosas que se pueden hacer en ambos lados para evitar una sobrecarga mínima. Tener ejemplos tanto en el idioma que conoce como en el idioma que desea aprender facilita bastante la curva de aprendizaje.
Utilice Sharpen para convertir sus programas Java a C # y vea las diferencias.
- Instale Visual Studio 2008 y Resharper con las combinaciones de teclas de IntelliJ IDEA. Esto le proporciona elementos como solicitarle que incluya espacios de nombres si comienza a usarlos.
- Comience un nuevo proyecto y comience a escribir código Java, cuando encuentre algo que no funciona correctamente o no pueda encontrar la clase que está tratando de usar Google "PrintLn in c #".
- Escriba pruebas o fragmentos de código para verificaciones de cordura, como si desea verificar si == funciona para cadenas (lo hace)
- se da cuenta de que los tipos de datos de c # alias (int es un alias para System.Int32, string para System.String)
- mira el código de otras personas. Recomiendo el código Google JP Boodhoos.
- Toma un trabajo en C #, hay muchos trabajos que requieren tanto Java como C # especialmente en soporte.
- Conozca sus bibliotecas, la mayoría de las bibliotecas de Java se han portado y la mayoría de las veces el nombre es similar (Hibernate => NHibernate) o (Xstream => Xstream.Net). No todas las bibliotecas tienen un nombre obvio, así que simplemente comienza a buscar las más aleatorias de las que escuchas aquí. es decir, (Rhino.Mocks, HTMLAgilityPack, MBUnit, Rhino.Commons, Castle Project)
- Vaya a las reuniones del grupo de usuarios para buscar un DNUG (Grupo de usuarios de Dot Net), serán útiles y podrá obtener algunos buenos consejos.
Esto ya ha sido cubierto en profundidad, creo. Vea los siguientes hilos.
No quiero cerrarlo porque no parece ser un duplicado "exacto", y me gusta la respuesta de Jon a esta pregunta.