从VB6到VS 2008(C#或VB)

时间:2009-08-08 18:18:32

标签: .net visual-studio visual-studio-2008

我现在已经开发了超过6/7年的网络,在此之前我开发了大约一年的Visual Basic 6(当时我对它很满意)和一两个关于C#的几个月(我忘记了我学到的大部分内容)。

问题是我对一些小型桌面应用程序有一些想法,我想用Python开发但没有一个可用的GUI框架让我在开发VB时能够轻松使用,所以我将开始开发再次在Visual Studio上。

我目前对.NET的了解非常有限,什么才能让我重回正轨?我应该在C#和VB之间选择什么语言?我在哪里可以找到参考资料和教程或书籍?

先谢谢

10 个答案:

答案 0 :(得分:9)

不要参与语言圣战,但我和五个开发人员一起工作,他们从VB6到.Net,再加上我自己。这不是很多,但我所看到的对我们所有人来说都是真的。

两种语言都非常好,我个人没有偏好。我觉得两者都同样舒服,我真的不认为要么优于另一个。

但仅仅基于我所看到的,当转移到.Net时,你最好只从一个原因开始使用C#。 .Net开发更多的是学习和使用类库,而不是语言语义。 VB6通过将短语放入语言规范来隐藏其中的一部分。

当您学习的语言与您已经完成的语言不同时,您更有可能寻找“正确”的方式来做事。

微软做了很多工作,使VB6开发人员可以轻松使用VB.Net,因此您可以在VB.Net上轻松编写代码,与VB6中的代码非常相似。这意味着很容易依赖“快捷方式”并将不良习惯带入您的.Net开发中。因此,您会看到那些没有真正“获得”ADO.Net之间差异的人及其程序因此而导致性能和设计问题。

根据评论数小时后添加

我只想澄清一点,我并不是说VB不如C#。正如所指出的,两者都编译成相同的MSIL,两种语言都很好。我所说的“VB6'带来了坏习惯”可以用一个例子来澄清:

我工作的五个中的两个在代码中做了同样的事情。他们需要从数据库中获取记录并循环遍历它们,以便对数据执行一些操作。正常的做法是将DataReader DataAdatpter与DataTable一起使用并循环使用。但是,它们都创建了一些数组变量并循环通过DataReader结果并将它们分配给数组数组,然后循环遍历数组进行计算,这意味着它们不仅添加了不必要的计算周期,而且还采用了项目一个可以用

之类的东西加入的集合
Dim FullName AS String = CurrentRow("FirstName").ToString()  + " " + CurrentRow("LastName").ToString()

to(假设ar是数组变量而i是索引器)

 Dim strFullName AS String = ar(i)(3).ToString()  + " " + ar(i)(4).ToString()

他们的方法有效,但增加了额外的周期,使代码更难理解。我问他们每个人为什么这样做。其中一个人希望能够在连接关闭后使用数据,这样他们就不会意外地更新某些内容。这是您需要担心的RecordSet,而不是DataReader或DataAdapter。这显然是有人没有理解VB6的做事方式和ADO.Net之间的区别。另一个人对阵列感觉更舒服,因为她熟悉它们。

所以我的观点与一种语言比另一种语言“更好”无关。这将是傲慢的,也是不知情的。从功能上讲,你可以用另一个你不能做的事做。我喜欢前面提到过的一些VB.Net“快捷方式”。 (VbNewline vs System.Environment.NewLine和整个My命名空间,InputBoxes等)。

我的观点是,在学习一些完全不熟悉的东西时,你不太可能被自己的先入之见所抛弃。当我们从VB.Net商店转到C#商店时,我们看到这样的事情就消失了。它有 NOTHING 与语言有关,一切与开发人员被迫正确学习而不是走捷径。

所以,出于这个原因,我仍然坚持我原来的建议,但无论如何,如果你喜欢VB,那就去吧。并且不要担心任何人“低头”使用它。所有这些“我的语言比你的语言更好”的东西都是胡说八道。有些语言比其他语言有优势,但在.Net世界中,在VB与C#的争论中,两种语言实际上都非常接近,没有太大区别。这场辩论毫无意义(并且长大了)就像“我爸爸可以打败你爸爸”的论点一样。

答案 1 :(得分:3)

C#可以说更好,它基于标准,类似于JavaScript / ActionScript以及您在开发过程中可能使用或使用过的其他语言。

一些很好的参考资料包括MSDN网站,www.asp.net,http://www.codeproject.com/

答案 2 :(得分:3)

我已经使用Visual Basic大约9年了,并在其中制作了一些非常受欢迎的应用程序。当我迁移到.Net时,我选择了VB.Net,第一年我玩得很开心。它确实允许我携带一些VB行李并更快地完成任务。

后来当我阅读并重新阅读C#中的代码示例并开始学习一些语言时,我对更加专业的方法印象深刻。我在C#中编写了一些现有应用程序的代码(类库),我非常喜欢这种体验,大约3年前我退出VB.Net,从那时起我就一直只用C#进行编码。

这些天我制作网络应用程序并赢取应用程序,所有这些都在C#中。

答案 3 :(得分:2)

我目前正在将一个旧的VB6应用程序转换为VB.NET,更喜欢在C#中工作,并且已经在.NET中进行了大量的开发。

如果你熟悉OO编程,特别是JAVA和C ++,那么C#感觉会更好。

由于你对VB6感觉更舒服,很多sugar  在VB.Net中是相同的,但它提供了与C#相同的面向对象特性。

This是一个很好的比较。

熟悉VB6,C#和VB.NET在后端是相同的,VB.NET对你来说是更好的选择(如果你愿意,我更喜欢C#)。

关于c#的最佳教程:MSDN C# Programming Guide

The VB.NET equivalent

答案 4 :(得分:2)

大多数人来自VB背景使用的逻辑是VB.net是VB的自然演变,并且它是最容易接受的。这种逻辑的缺陷是,移动到.net的最大障碍是学习框架。无论语言如何,语言语法都很容易被提取。

当您查找特定编程技术的代码示例时,您会发现绝大多数示例都是在C#中提供的。帮自己一个忙,从C#开始。有一个参数列表,只要我的手臂为什么C#是优越语言(我相信它),但选择它的最实际的原因只是方便的问题。如果您选择使用VB.net,那么无论如何您最终都会学习C#,因为您越来越沮丧地尝试使用vb中的示例查找文章,书籍,论坛帖子等。提供这些示例的人员类型倾向于c#,只有少数提供两种语言的示例。

答案 5 :(得分:2)

我花了10多年做VB。版本1到6.当VB.NET出现时,它似乎就像是自然迁移,但我从一开始就讨厌它。我无法理解它。

所以我学习了Java,但这并不令人满意。至少我现在可以在Linux上运行我的应用程序。

然后Mono出现了,所以我学会了C#。多么清新的空气! .NET框架现在非常有意义,就像VB.Net一样,我感觉不对。方孔钉在圆孔中。

答案 6 :(得分:1)

我建议你坚持使用VB.net,因为它类似于VB(我个人更喜欢C#)。使用VB.net,您可以获得与C#几乎相同的功能。为什么你要努力学习像C#这样的语言,其语法更像是C,而且与VB无关,特别是在你努力学习新框架的时候。此外,您可以选择在WPF中进行开发。 我首先看一下http://windowsclient.net/

重要的是VB.net或C#你现在拥有.net框架的强大功能。

答案 7 :(得分:1)

我来自Visual FoxPro背景,发现VB.NET语言更自然易学 - 语法更接近VFP。这样可以更快地提高工作效率。我怀疑你可能会发现同样来自VB。

但是,如果您确实选择了VB.NET路由,您可能会发现在C#上有更多的代码示例。我发现像www.developerfusion.com/tools/convert/csharp-to-vb之类的转换器对于将它们转换为VB.NET非常有用(它也可以反过来工作)。

答案 8 :(得分:1)

  

我目前对.NET的了解非常多   有限的,最快的方式是什么   让我回到正轨?什么语言   我应该在C#和VB之间做出选择吗?

首先我想说我喜欢VB.NET和C#。我知道他们,偶尔也会使用它们......

话虽如此,你考虑过Delphi吗?与VB.NET和C#不同,它编译为本机代码,如C ++。如果您熟悉VB 6,那么将很容易过渡到Delphi。

Delphi的创建者(Anders Hejlsberg)也创建了C#。

您可以免费使用Turbo Delphi(基于Turbo Delphi 2006)。 great resources也有一些learning Delphi在线可用。

许多流行程序都是用Delphi编写的,包括Skype,Spybot Search and Destroy,Macromedia Homesite,Copernic Desktop Search等。

如果您正在寻找一种易于使用,功能强大且具有非常高质量的GUI库的编程语言,那么应该仔细考虑Delphi。 Delphi(和C ++ Builder)都利用了VCL(可视化组件库),这是一个非常高质量,不断更新的GUI工具包。

给它一个旋转,你不会后悔!

答案 9 :(得分:1)