我应该选择VB.net还是C#来开发桌面应用?

3

我来自Unix /服务器/C++/Java背景,没有GUI经验。我需要构建Windows GUI应用程序,我需要快速构建。我被告知,.NET家族是完成这项工作的确切选择。但是有VB.net和c#,我应该选择哪一个?哪个更快,更适合这项工作?对于非技术用户,哪个更容易安装,对于我来说部署最终产品更容易?

10个回答

10

简短的回答是并不重要。

就功能而言,.NET框架提供了基础类库、运行时环境等,您可以使用任何您选择的语言。您可以使用VB.NET、C#或任何其他一流的.NET语言来完成相同的任务。

然而,由于您具有C++ / Java背景,您可能会发现C#语法比VB.NET更加熟悉。


你的答案可能在技术上是正确的,但显然选择哪个更重要,因为如果你擅长其中一个,你可能需要2-3个月的学习曲线来掌握另一个。 - JL.
1
是的,但是原帖作者并不精通.NET语言,所以这完全无关紧要。 - Maximilian Mayerl
你需要花费2-3个月的时间来学习语法吗?因为这基本上是它们之间唯一的区别,除了一些更晦涩的特性(条件捕获语句和XML文字是我想到的两个)。 - Matthew Scharley

7
就可用性而言,它们完全相同。
但是,如果您来自C++/Java背景,我建议您使用C#,因为学习曲线更小,您不需要学习全新的语法。
至于部署,如果适当地使用OneClick,.NET应用程序对非技术用户来说非常容易使用。这归结为“转到我的网站并单击安装按钮”。从开发人员的角度来看,通常也不会更加困难。Visual Studio还提供了制作传统安装包的选项。

我同意 - Java的语法特别相似,所以C#似乎是更好的选择。 - Cocowalla
@divo:很少有功能是无法模拟的。条件捕获子句是我能想到的唯一一个,即使它们可以(不完全相同,但对于99.9%的用途足够接近)。 - Matthew Scharley
是的,C# 更像 Java,那么关于 GUI,哪个更容易? - user63898
1
在C#和VB之间?GUI设计师是完全相同的 - Matthew Scharley
@Matthew:是的,通常情况下你不会注意到差异。然而,某些功能可以用其中一种语言更简单地解决(例如VB中的晚绑定),有些功能在两种语言中都无法使用(例如在C#中编写非托管代码的可能性)。 - Dirk Vollmar
显示剩余2条评论

5

这里有一句来自Jeremy D. Miller的名言:

VB.Net和C#本质上就像是乡村音乐和西部音乐。

这句话解释得很清楚了,不是吗?


4

关于VB.NET与C#的问题,几乎可以说是一场宗教战争。

它们在允许您做什么以及您能多快地完成任务方面非常相似。

考虑到您有C++背景,C#可能会更加熟悉,但您仍需要学习。使用VB.NET的学习曲线会更陡峭。

就部署问题而言,您的用户将需要安装相应的.NET框架。它存在版本从1.0到3.5 SP1,4.0即将推出。

  • Windows Server 2003预装了.NET 1.1
  • Vista / Windows Server 2008预装了.NET 3.0
  • Windows 7预装了.NET 3.5

现在没有战争了,因为微软基本上表示他们计划在功能方面将两者完全保持一致...当然,当我在C#中看到条件捕获块时,我才会相信,但我们可以梦想,不是吗? - Matthew Scharley
关键问题在于学习.NET框架而不是特定的编程语言。 - Murph
我认为由于他的Java背景,C#会更加熟悉。而C++则相当不同。 - Greg Hewgill
没错,但C#比C++更接近Java。 - Greg Hewgill
无论如何,任何自重的C++/Java开发者都不会使用VB。 :) - Greg Hewgill
我认为“战争”将继续,无论功能如何 - 有些人只是觉得VB的语法很可怕 ;) - Cocowalla

3

对于你想要做的事情来说,这些语言基本上是等效的。我建议使用C#,因为你的C++背景将使你在学习C#时比VB.net更容易上手。


3

选择C#的原因:

  1. 在所有.Net语言中,它拥有最好的工具支持。
  2. 如果你是C++程序员,你会发现C#的语法比VB更容易适应。
  3. 就基于GUI的桌面应用而言,VB没有比C#更特殊的优势。
  4. 由于它更受欢迎,学习C#在职业方面将会更加有成效。

C#真的比VB更受欢迎吗?有很多VB程序员存在。 - Per Erik Stendahl
在StackOverflow上比较“C#”标签和“VB.Net”标签的数量,你就会知道了。 - Frederick The Fool
VB程序员不使用VB.NET,而是使用旧的VB6。对于.NET,我建议使用C#。 - mark vanzuela
@Fredrik:你说得对,但我不认为SO的人群代表了整个.NET人口。C#程序员往往更加积极参与社区。 - Per Erik Stendahl
Stackoverflow拥有更多的C#人员,但也有其他VB论坛。例如,vbforums.com上有94,000个vb.net主题,而SO上不到5,000个。 - xpda
也许相比年轻的SO,vbforums.com已经很老了,因此它已经有很多关于vb的主题。 - mark vanzuela

2
这两种语言基本上是等同的。如果你使用Visual Studio(如果需要快速构建应用程序,我建议这样做),那么对于这两种语言,GUI设计体验将是相同的。同样,VB.NET和C#的安装和部署过程也没有区别。
因此,除非你需要某种特定功能,只有其中一种语言支持(例如C#中的多行Lambda表达式或VB中的XML文字 - 对于简单的GUI应用程序,你可能都不需要),你可以选择其语法更为熟悉的语言。由于你具有C ++ / Java背景,我猜这意味着选择C#比较合适。

2
我认为由于你的背景,应选择C#。虽然这两种语言最终都会完成相同的任务,但C#是未来的方向,据我所知,对于只懂vb.net的开发人员而言,使用C#有更多的工作机会。
如果你来自纯VB6背景,则学习VB.net可能更容易,但我发现大多数具有JS经验的Web开发人员可以轻松掌握C#语法。
在学习.NET时,你应该掌握框架,因为了解何时重用框架类对你作为.NET开发人员的整体技能非常重要。

1
就能力而言,这两者基本上是相同的 - 有一些差异,但在一般情况下并不太重要。在向用户部署应用程序方面,它们是相同的 - 能力在框架中而不是语言中。
因此,有两种看待这个问题的方式: 1)使用C#,因为语法很熟悉,你不会为了忘记在语句末尾添加分号而束手无策。 或者 2)使用VB.NET,因为它与众不同,所以你会更容易弄清楚你正在使用哪个环境。
实际上,我会选择C# - 可能有更多的C#示例存在,如果你已经能够在C++和Java之间进行切换,那么添加第三种类似的语言可能不会太有压力。

0
我们使用asp.net vb.net进行编程,但有时我们会在C#中找到算法,并且将它们转换为C#没有问题。 C#是专门为.NET创建的,但我无法告诉您为什么更好。在WebForms中,您可以使用一种语言编写某些页面,而使用其他.net语言编写其他页面,我们在大多数基于VB.NET的项目中编写了几个C#页面。如果您必须进行基于WebForms的应用程序,则可以尝试两者,但如果您不需要进行WebForms,则不建议使用它们而是使用WinForms。
在我们最近阅读的asp.net书籍中,他们将代码示例从VB.NET切换到C#,因为现在大多数人都使用C#进行.NET开发。我们出于琐碎的原因使用VB.NET,因为任何.NET语言都共享基础类库,我们只想避免输入“{”,“;”和大小写敏感性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接