我为什么要学习C#?

我想知道为什么我应该学习C#?

Java不具备哪些C#function?

C#是一种面向对象的高级语言,可用于开发应用程序。

它支持getter / setter构造,委托和真正的generics,而Java则不支持。 C#通常在Windows上感觉更“原生”,因为Windows.Forms和WPF比Swing更接近本机代码。 但是,Java比C#更具跨平台性(即使项目“Mono”正在改变它)

有很多不同之处: http : //en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java

您是否应该使用其中一个取决于您的优先级。 你想写些什么?

C#(和其他CLR语言)具有函数式编程(例如委托和闭包)的各个方面,使得某些类型的开发和设计模式更容易。 请参阅Steve Yegge的这篇文章了解更多信息。 代表们可以使代码更具表现力和简洁性。

您应该学习两者,并在适当时使用它们。 我觉得这不是“我应该学习哪一个?” 有点问题。 (或者“我知道Java,我为什么要学习C#?”问题。)Welbog发布的比较将帮助您决定何时使用其中一个。 但是,我自己,我喜欢在我的工具箱中同时使用它们。

语法:它们都是合理的语言 – 它们支持几乎相同的高级结构和设计(OO,封装,……),并且在你达到代码级别(整体不是那么大)之前是相当平等的一个交易.C#在function方面胜过Java,简单地说Java胜过C#)。

可移植性:我最大的因素是,我最近致力于频谱分析仪和即将推出的有线电视系统的应用。 在C#中都不能进行远程编程(你完全依赖microsoft将运行时移植到你感兴趣的平台上.Java是开源的(可能还有一两件小件不是,但他们真诚地致力于这就足够你可以移植它并在任何地方使用它。

如果您只对Windows感兴趣,并且想要利用与Windows紧密,简单的集成,那么C#就是您的平台。

VM这两种语言都包含可以支持其他语言的“运行时” – 而其他语言通常可以访问每个环境中提供的(非常丰富的)库。

微软可以在它的VM上运行几种(十二种)语言,没有一种像C#一样令人印象深刻(虽然Ruby和Python可能很好 – 它们是否完全可用)?

JVM有几百种,包括一些最先进的实验语言,它们的运行速度通常与其本地语言相同或更好。 有些被认为是编程中的下一代,与C / C#不同,因为它们来自C语言。我看了Scala,但我必须变老,这只会伤害我的头脑,但我承认有一些非常先进的概念可用于那里。 Groovy岩石。

系统集成/工具:由于Java无法承诺任何一个平台,因此C#获胜。 C#也很好地与数据库和其他外部依赖项集成,Java正在变得更好地集成,但这些工具更加不匹配。 C#整个工具集往往非常集成,因为它往往来自单个供应商。

使用它的平台数量(潜在客户数量):最后我听说,Java赢了。 走吧。 每次尝试弄清楚有多少手机,微波炉,电视和烤面包机可能正在运行Java? 根据我的理解,这个数字相形见绌。

你唯一的理由是因为你想要

C#是一个

多范式编程语言,包括function,命令,通用,面向对象(基于类)和面向组件的编程规则

所以你可以用一种语言从不同的范例中学习很多技巧

人们已经就这个话题提出了很多 问题 。 读起来,他们在那里有很好的信息。 🙂

最大的原因,imho,为什么是因为(对于Windows桌面应用程序至少)Java UI是一个非常丑陋的教育。 丑陋难看。 笨拙难看。 如果你让你的妹妹沾沾自喜,就像你拥有的孩子一样丑陋。

如果您需要在任何操作系统上运行,Java是您的最佳选择(Mono正在迎头赶上!)。 但是,如果您正在为Windows环境进行编程,那么C#就是编码的梦想,并且看起来像任何其他本机应用程序。

除此之外,我会说Linq。 并且能够在exception上快速失败而不必在任何地方处理exception(比如我们实际上知道如何处理每个exception)。 哦,又是Linq。 Linq真是太美了……对我来说……难道你不明白吗?

废话,忘记了lambdas。 该死的,我喜欢lambdas和他们所有的封闭善良。

简单的答案 – C#是此时开发Micorosft应用程序的主要语言。 学习它开辟了一个新的世界,有可能在基于Microsoft的应用程序上工作。

而且,这并不是很难学。 比VB稍微强一点,但有很多OO能力。

有些人会说C#是微软的Java – 实际上它们看起来几乎完全相同,只是微小的差异,但不同的类库。 如果您已经了解Java,那么选择C#应该不会太难。

我不敢相信没人发布这个…

因为,它是一种有趣的语言。 我个人认为Java是一种相当讨厌的语言(仍然可以很有趣),但不像C#那样令人愉快。

你需要学习C#吗?

你的工作情况会有所改善吗?
你想学习新的东西吗?

C#中的开发环境是否更好,工具更好?
你认为你可以用C#做​​一些你不能用Java做的事吗?

也许是桌面,网络和移动的通用语言 – 但Java也有这个。

您可以用几个问题来决定。

我是C#我自己,当我被介绍到编程时,从Java开始。 我认为Java在理解编程方面做得非常出色,主要是因为没有神奇的智能感知或Windows应用程序的表单设计器 – 我们不得不自己编写这个该死的东西。 当你正在学习时哪个好。 但我认为C#和整个.NET / Visual Studio生态系统可以提高您的工作效率。

比语言function更重要的是运行时环境和库。

C#和Java有一组不同的库,框架,操作系统交互等。

基于这个问题似乎你对学习它并不感兴趣,因为它更多地了解编程并清楚地寻找实际原因。

这就是为什么我认为你不应该费心去学习它,因为它只是你工具箱中完成同样事情的另一个工具。

我喜欢Welbog所写的内容。 我想补充一点,这还取决于你在专业领域,你的兴趣以及你的工作前景/兴趣。

如果你刚刚开始学习Java,那么选择一些C#可能有助于拓宽你的编程视野。 这些语言是相似的(粗略地说),但当然,在一个编程与另一个编程中,至少可以说是细微差别。 如果您已经编写了一段时间的Java,那么也许您最好不要扩展J2EE专业领域或者查看其他支持领域和/或语言。

就业前景而言,您可能会发现您所在地区的公司雇佣的.NET开发人员多于Java,反之亦然。 您可能还想查看您想要工作的公司,并确保您的技能组合匹配。 例如,如果您曾梦想在使用JSP的特定公司工作,例如,那么坚持使用Java会更好。

您不应该学习C#,而是.NET Framework和相关技术。 想想J2EE vs .NET。 你为什么要学习.NET? 由你来决定。 像Java一样,它是为数不多的主要开发平台之一。 它function齐全,非常积极地开发并得到庞大的社区知识库的支持。

对我来说,选择就像我需要使用.NET库一样简单,因此我将使用C#或者我需要使用Java库,因此我将使用Java。 如果我在Windows客户端上工作,我将使用C#,如果我正在处理需要针对P6集成API运行的东西,我将使用Java。

你不应该觉得你错过了什么或应该使用其中一个。 看看你必须做什么,并选择最好的工具来做到这一点。

很难在此处的post中列出.NET Framework的所有function,就像列出Java SDK库中包含的所有function一样困难。

学习C#,因为它可能有或没有Java没有的function似乎是一个非常奇怪的原因(它确实有许多function,Java不会,但F#,LISP,Haskel,Ruby,Lua也是如此)甚至COBOL)。

你应该学习C#因为

  • 你需要(保持或找到工作,留在学校,等等)
  • 你想要
  • 扩展视野很有趣
  • 以上任何或全部

.NET中有一些语法糖优势,例如LINQ或Properties。 (是的,你没有属性 – 更不用说自动属性 ​​- 在Java中)。

从战略上讲,通过一些研究certificate,它有助于了解多种语言。 目前,PHP,Java和ASP.NET(C#)是使用最广泛的服务器端编程技术(请参阅https://w3techs.com/technologies/overview/programming_language/all )。 因此,了解所有三个能够为您的后端工程潜力提供支持。