Joe*_*oey 68
好吧,虽然C#和Java在表面上相似,但是有一些小的差异可能会让你感到困惑.一般来说,我认为从Java到C#的相反方向 - 问题较少.这主要是因为C#是一种更复杂的语言,因此您可能会发现许多来自常见Java模式的简化,但反过来可能会有点痛苦.
需要注意的事项(部分清单,不保证详尽无遗):
不同......
命名约定.在Java中,只有类型名称以大写字母开头(即PascalCase),其他所有内容都使用camelCase.但是,并不是很难坚持.
接口通常也不是从一开始I.另一方面,您必须使用不同的关键字实现它们.但是,在代码中间并没有真正帮助.
班级图书馆:-)
虽然显而易见,但这是我在学习语言时花费的最多时间.在处理已知范例时,语法差异很快就会被整理出来,但在某些情况下,了解标准库/类库/框架需要一些时间:-)
异常处理.Java具有所谓的已检查异常,这意味着必须捕获或向上声明异常.通常这意味着你有
catch (SomeException ex) {
ex.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
经常在你的代码1 :-)
int,float,char,& C.和类,如String.没有多大关系,因为他们实现自动装箱,但有时它仍然恼人的包裹int在Integer.virtual默认的,而c#方法则不是.foreach (a in b) → for (a : b)internal和protected internal不存在.但是不合格的成员对同一个包中的其他类是可见的(有点internal,但后来又不完全).==Java 完成的.你必须使用.equals().虽然在C#==中字符串是值相等,但在Java ==中始终是引用相等.不......
Foo getFoo()/ void setFoo(Foo foo)pattern在使用属性时静默生成的/ pattern,但是必须在Java中显式执行.通常,为了使语言本身更简单,Java中的许多东西都只是约定.不过,大部分时间你最好坚持他们:-)myList.get(5)而不是类似数组的语法来访问列表项myList[5].但是,这只是一个轻微的不便.Object.当编译器抱怨?你的泛型中的所有四个具有不同类型时,泛型中的通配符有时很难解决.(虽然公平地说:那是我在运行时需要类型信息的情况,所以我又回到了Objects).一般建议:抓住一位有Java经验的朋友,让他浏览你的代码.虽然他可能无法告诉你当你直接问他这个问题时你应该照顾的一切,他可以在代码中发现奇怪的事情然后通知你.这对我学习Java有很大帮助(虽然我先学习Java然后学习C#,所以它可能会有所不同).
1是的,我知道许多捕捉块看起来不同,但仍然,这可能是典型的,甚至不是那么罕见.
2 Quaere,JaQue,JaQu,Querydsl
3但是有lambdaj.感谢你指出这一点,Esko.
BFr*_*ree 12
老实说,我认为许多试图学习Java的C#开发人员的最大障碍是学习新的IDE.Visual Studio很棒,当你在C#中编写很长一段时间时,你会习惯它.当不得不转移到Eclipse或Netbeans时,你会突然感到迷茫.我该如何设置断点?最近的窗口在哪里?如何创建Windows应用程序?等等...我知道这听起来很疯狂,但我告诉你,人们非常依赖他们的IDE并且很难适应新的......
语言本身非常相似,没有几个关键字,Java缺少C#程序员习惯的属性(属性using,具体化(非类型擦除)泛型).
这里的主要问题是框架的知识,其中有数千个用于Java.
主要语言很好.了解库将是一件需要时间的事情.如果您正在进行Web应用程序,那么很多东西需要学习......与WCF和ASP.net等效的技术.你没有说你在哪个领域工作......桌面,服务器或网络服务器?
| 归档时间: |
|
| 查看次数: |
14033 次 |
| 最近记录: |