Eu conheço bem o Java. Quais ressalvas e resources me ajudarão a cruzar para o outro lado (C #) da forma mais indolor possível.
Maior dica: vá com as convenções de nomenclatura .NET desde o início. Dessa forma, você será constantemente lembrado sobre a língua em que você está. (Parece bobo, mas é realmente útil.) Abrace os idiomas da linguagem, tanto quanto possível.
Existem vários livros especificamente para pessoas em sua situação – procure por “C # for Java” na Amazon e você terá muitos accesss. Vale a pena ler atentamente para certificar-se de que você não pressupõe que as coisas funcionem da mesma maneira em C # como em Java. (Por exemplo, em instâncias de instância C #, inicializadores são executados antes do corpo do construtor da class base; em Java, eles acontecem depois. Coisas sutis como essa podem demorar um pouco para serem aprendidas e são fáceis de perder se você estiver skimming.)
Se você vai usar C # 3, eu recebo um livro que definitivamente cobre isso – tudo em c # 3 será novo para você. Plugue gratuito: meu próprio livro ( C # in Depth ) cobre C # 2 e 3, mas assume que você já sabe C # 1. (Em outras palavras, não será suficiente por si só, mas você pode querer isso como um “segundo” livro.)
Veja este excelente artigo sobre C # na Perspectiva de um Desenvolvedor Java . Ele tem vários insights sobre as coisas que podem ser feitas em ambos os lados para evitar sobrecarga mínima. Ter um exemplo tanto na língua que você conhece quanto na língua que você quer aprender facilita bastante a curva de aprendizado.
Eu fiz a transição muito facilmente usando o C # no trabalho, mas uma das coisas mais importantes a se fazer é se familiarizar com a API .NET e algumas das poderosas técnicas disponíveis em C #.
Depois que eu aprendi a biblioteca .net, eu confiei nela muito mais do que costumava, então aprender sobre as coisas que ela pode fazer por você é muito útil. Depois disso, se você trabalha com o código db, aprenda o LINQ, e também lambas técnicas, tipos anônimos e delegates também são úteis para pegar.
A syntax da linguagem é semelhante, por isso só deve ler uma pequena referência da syntax C #. Como um livro simples (para programadores experientes) ou talvez a wikipedia ( http://en.wikipedia.org/wiki/Comparison_of_Java_and_C_Sharp ) contará o suficiente.
A maior diferença é a biblioteca: os sites da Asp.Net são totalmente diferentes dos servlets java.
Não leia muito, apenas comece a programar!
Aqui está um link que tem comparação de syntax entre Java e C # (apesar de ser quase idêntico, existem algumas diferenças).
http://www.harding.edu/fmccown/java1_5_csharp_comparison.html
Use o recurso Sharpen para converter seus programas Java em C # e ver as diferenças.
Eu sei que uma boa resposta já foi aceita. No entanto, gostaria de fazer uma adição …
Acho que aprender uma nova linguagem normalmente envolve aprender diferenças sintáticas sutis … especialmente ao lidar com a diferença entre as linguagens da família C / C ++ / Java / C #.
Além de um bom livro de referência grosso, eu recomendo obter uma referência de bolso como C # 3 Pocket Reference da O’Reilly . Não irá ajudá-lo com os padrões de design, etc … mas fornecerá uma referência muito rápida sobre as diferenças específicas do idioma que você está usando.
Aqui está uma sinopse rápida sobre este livro do site:
C # 3.0 Pocket Reference inclui muitas ilustrações e exemplos de código para explicar:
- Recursos novos no C # 3.0, como expressões lambda, tipos anônimos, propriedades automáticas e muito mais
- Todos os aspectos da syntax C #, tipos predefinidos, expressões e operadores
- Criação de classs, estruturas, delegates e events, enums, genéricos e restrições, tratamento de exceções e iteradores
- As sutilezas do boxe, sobrecarga de operação, covariância delegada, resolução do método de extensão, reimplementação de interface, tipos anuláveis e elevação de operação
- LINQ, iniciando com os princípios de sequências, execução diferida e operadores de consulta padrão e terminando com uma referência completa à syntax de consulta – incluindo vários geradores, junções, agrupamentos e continuações de consulta
- Consumindo, escrevendo e refletindo sobre atributos personalizados
Eu usei este livro (bem, o original) para me ajudar a deixar de ser um desenvolvedor Java para um desenvolvedor C #. Enquanto eu estava aprendendo, eu mantinha em minha mesa o tempo todo e isso realmente ajudou.