我很熟悉Java。哪些注意事项和资源可以帮助我尽可能轻松地过渡到另一边(C#)。
最重要的提示:从一开始就遵循.NET命名约定。这样你就会不断地想起你所处的语言是哪一个。尽可能接纳该语言的习惯用法。
有一些专门针对你这种情况的书籍——在亚马逊上搜索"C# for Java",你会得到大量搜素结果。值得仔细阅读,以确保你不会认为C#和Java的行为方式是相同的(例如,在C#中,实例变量初始化器在基类构造函数体之前执行;而在Java中则是在之后执行。这些微妙的东西可能需要一段时间才能学会,并且如果你只是匆匆浏览的话,很容易错过)。
如果你将使用 C# 3,请获取一本明确覆盖这方面内容的书籍 - 关于 C# 3 的所有内容都将对你来说是新的。自我宣传一下:我的书(C# in Depth)涵盖了 C# 2 和 3,但假定你已经掌握了 C# 1。(换句话说,它本身并不足够,但你可能需要它作为“第二本”书籍。)
我知道已经有一个好的答案被接受了。然而,我想做一个补充...
我发现学习一门新语言通常涉及到学习微妙的语法差异...特别是在处理C/C++/Java/C#系列语言之间的差异时。
除了一本不错的参考书外,我建议再购买一个口袋参考书,比如O'Reilly出版社的C# 3 Pocket Reference。它可能无法帮助你理解设计模式等内容,但可以提供关于你正在使用的语言的非常快速的参考信息。
以下是该网站对这本书的简短介绍:
《C# 3.0口袋参考》包括丰富的插图和代码示例,用于解释以下内容:我曾使用此书(原版)帮助我从Java开发人员转向C#。在学习期间,我始终将它放在我的桌子旁边,真的很有帮助。
我在工作中使用C#,很容易地进行了转换。但是,其中最重要的一件事情是熟悉.NET API以及C#中可用的一些强大技术。
在我学习了.net库之后,我更多地依赖它,因此了解它所能为您做的事情非常有帮助。之后,如果您需要与数据库代码一起工作,请学习LINQ,并且掌握lambas、匿名类型和委托等技巧也很有用。
这里有一个链接,其中包含Java和C#之间的语法比较(尽管它们几乎相同,但还是存在一些差异)。
http://www.harding.edu/fmccown/java1_5_csharp_comparison.html