【问题标题】:How do I move from Java to C#?如何从 Java 迁移到 C#?
【发布时间】:2008-10-17 14:01:58
【问题描述】:

我很了解 Java。哪些注意事项和资源将帮助我尽可能轻松地跨越到另一边 (C#)。

【问题讨论】:

  • 另外,这不是专门的答案,而是通过 Jeffrey Richter 的 C# 获取并阅读(从头到尾)CLR。我们使用的是 3.5 (sp1) 版框架,但 CLR 仍然是 2.0 版。那本书将为您提供构建其他一切的基础
  • 我发现从 C# 到 Java 的转换非常容易,反之亦然。它们有许多相似之处,并且您在 Java 中学到的大多数编程范式都将继承下来。

标签: c# java


【解决方案1】:

最大的提示:使用 go 一词中的 .NET naming conventions。这样一来,您将不断被提醒您使用的是哪种语言。(听起来很傻,但确实很有帮助。)尽可能地接受该语言的习语。

有各种专门针对您所处情况的人的书籍 - 在 Amazon 中搜索“C# for Java”,您将获得大量点击。值得仔细阅读,以确保您不会假设在 C# 中的工作方式与在 Java 中相同。 (例如,在 C# 中,实例变量初始化器在基类构造函数主体之前执行;在 Java 中它们发生在之后。像这样的微妙事情可能需要一段时间来学习,并且如果您略读很容易错过。)

如果您打算使用 C# 3,我会得到一本明确涵盖该内容的书 - C# 3 中的所有内容对您来说都是新的。免费插件:我自己的书 (C# in Depth) 涵盖 C# 2 和 3,但假设您已经了解 C# 1。(换句话说,它本身是不够的,但您可能希望它作为“第二”书。)

【讨论】:

  • C# in Depth 是一本非作者的好书(IE 我!)。虽然我不得不承认我觉得封面有点丑。
  • 它没有我的照片那么丑:)
【解决方案2】:

C# from a Java Developer's Perspective 上查看这篇精彩的文章。它对双方可以做的事情有几个见解,以避免最小的开销。用你知道的语言和你想学习的语言举例可以大大简化学习曲线。

【讨论】:

    【解决方案3】:
    1. 使用 IntelliJ IDEA 键绑定安装 Visual Studio 2008 和 Resharper。如果您开始使用命名空间,这会提示您包含命名空间。
    2. 开始一个新项目并开始编写 Java 代码,当您遇到无法正常工作或无法找到您尝试使用 Google“PrintLn in c#”的类时。
    3. 编写测试或代码 sn-ps 以进行健全性检查,就像您可能想检查 == 是否适用于字符串(确实如此)
    4. 意识到 c# 别名数据类型(int 是 System.Int32 的别名,字符串是 System.String)
    5. 看别人的代码我推荐JP Boodhoos Google code
    6. 找一份 C# 工作,有很多工作需要 Java 和 C#,尤其是在支持方面。
    7. 了解您的库,大多数 Java 库已被移植,并且大多数时候名称类似于 (Hibernate => NHibernate) 或 (Xstream => Xstream.Net)。并非每个库都有一个明显的名称,因此只需开始查找您在此处听到的随机名称即可。即(Rhino.Mocks,HTMLAgilityPack,MBUnit,Rhino.Commons,Castle Project)
    8. 参加用户组会议,寻找 DNUG(Dot Net 用户组),他们会很有帮助,您可以获得一些好的建议。

    【讨论】:

      【解决方案4】:

      微软为使用 C# 的 Java 开发人员提供了一个 cheat-sheet :)

      【讨论】:

        【解决方案5】:

        我知道一个好的答案已经被接受。不过,我想补充一点……

        我发现学习一门新语言通常需要学习细微的句法差异......尤其是在处理 C/C++/Java/C# 系列中的语言之间的差异时。

        除了一本厚厚的不错的参考书外,我还建议您购买一本袖珍参考书,例如C# 3 Pocket Reference from O'Reilly。它不会帮助您了解设计模式等...但会提供关于您所使用语言的具体差异的非常快速参考。

        以下是该网站上关于这本书的简要介绍:

        C# 3.0 袖珍参考包含大量插图和代码示例进行说明:

        • C# 3.0 的新功能,例如 lambda 表达式、匿名类型、自动属性等
        • C# 语法、预定义类型、表达式和运算符的所有方面
        • 创建类、结构、委托和事件、枚举、泛型和约束、异常处理和迭代器
        • 装箱、操作重载、委托协变、扩展方法解析、接口重新实现、可为空类型和操作提升的微妙之处
        • LINQ,从序列、延迟执行和标准查询运算符的原理开始,并以对查询语法的完整参考结束 - 包括多个生成器、连接、分组和查询延续
        • 使用、编写和反映自定义属性

        我使用这本书(以及原版)帮助我从 Java 开发人员转变为 C# 开发人员。在我学习的时候,我一直把它放在我的桌子上,它真的很有帮助。

        【讨论】:

          【解决方案6】:

          我在工作中使用 C# 非常轻松地完成了转换,但最重要的事情之一是熟悉 .NET API 和 C# 中可用的一些强大技术。

          在学习了 .net 库之后,我比以前更加依赖它,因此了解它可以为您做的事情非常有帮助。在那之后,如果你完全使用 db 代码,学习 LINQ,还有一些技巧,lambas、匿名类型和委托也很有用。

          【讨论】:

            【解决方案7】:

            语言语法各不相同,所以我应该只阅读 C# 语法的一小部分参考。就像一本简单的书(对于有经验的程序员)或者维基百科(http://en.wikipedia.org/wiki/Comparison_of_Java_and_C_Sharp)就足够了。

            最大的不同是库:Asp.Net 网站与 java servlet 完全不同。

            阅读不多,开始编程吧!

            【讨论】:

            • 不要使用陈旧的 ASP.NET Web 表单模型。为 ASP.NET MVC 跳过它。更好的框架。
            • 这两种语言非常非常相似,尤其是 Java 1.4 与 C# 1。如今它们确实完全不同,甚至在它们看起来相似的地方(例如泛型)它们可以是天壤之别。
            • 相信两种语言相似是发现自己陷入痛苦世界的好方法...这很容易导致忽略细微的差异,例如如何重新抛出异常。
            【解决方案8】:

            这是一个比较 Java 和 C# 语法的链接(尽管几乎相同,但也有一些差异)。

            http://www.harding.edu/fmccown/java1_5_csharp_comparison.html

            【讨论】:

              【解决方案9】:

              使用 Sharpen 将您的 Java 程序转换为 C# 并查看差异。

              【讨论】:

                猜你喜欢
                • 2012-09-15
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2014-11-26
                相关资源
                最近更新 更多