Como faço para passar de Java para C #?

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.

  1. Instale o Visual Studio 2008 e o Resharper com as ligações de chave do IntelliJ IDEA. Isso lhe dá coisas como solicitar que você inclua namespaces se começar a usá-los.
  2. Inicie um novo projeto e comece a escrever código Java, quando você encontrar algo que não funcione corretamente ou não conseguir encontrar a class que está tentando usar o Google “PrintLn in c #”.
  3. Escrever testes ou trechos de código para verificações de integridade, como você pode querer verificar se == funciona para cadeias de caracteres (funciona)
  4. perceba que c # alias Data Types (int é um alias para System.Int32, string para System.String)
  5. olhar para o código de outras pessoas, eu recomendo JP Boodhoos código do Google
  6. Pegue um trabalho em C #, há muitos trabalhos que requerem Java e C # especialmente em suporte.
  7. Conheça suas bibliotecas, a maioria das bibliotecas Java foi portada e na maioria das vezes o nome é como (Hibernate => NHibernate) ou (Xstream => Xstream.Net). Nem toda biblioteca tem um nome óbvio, então apenas comece a procurar por nomes randoms que você ouve aqui. ie (Rhino.Mocks, HTMLAgilityPack, MBUnit, Rhino.Commons, Projeto do Castelo)
  8. Ir para reuniões de grupos de usuários procure por um DNUG (Grupo de Usuários Dot Net) eles serão úteis e você pode obter alguns bons conselhos.

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.