VB.NET中的VB运行时函数用于VB6程序员

时间:2008-10-28 00:22:13

标签: .net vb.net vb6

我正准备一个Visual Basic 2005上的课程,目标是将Visual Basic 6程序员迁移到.NET平台。

我主要关注的是教我的学生在.NET中开发的最佳实践,我想知道是否考虑使用VB运行时函数VB.NET是否合法。

我已经读过VB.NET中的许多VB函数实际调用.NET Framework上的方法,因此它们似乎主要是为了简化从早期版本的Visual Basic到VB.NET的过渡。但是,the VB.NET team似乎建议尽可能使用它们,因为它们声称它们在.NET框架API之上进行了一些优化。

你对此有何看法?

6 个答案:

答案 0 :(得分:7)

我所在的地方,我必须经常在C#和VB.Net之间来回移动。考虑到这一点,我们真的不喜欢旧的VB函数,特别是字符串函数:Trim(), Replace(), Len(), UCase()等。它们在.Net程序中看起来很奇怪,我不希望在代码中看到它们我不得不继续努力。

唯一的例外是Len(),如果您使用of verbage读取头脑中的代码。在这种情况下,将Len(theString)视为length of theString似乎是有道理的。在其他的,它更多的是由字符串执行的操作,所以我想看到。 (点)符号。

另一方面,我很难从转换运算符中断绝自己:CStr, CInt, CDbl等。

我不能告诉你为什么我喜欢一种类型而不喜欢另一种类型;它可能只是我发现Convert.To ___()太冗长,或者它可能与它们运算符而不是函数有关。

修改
这一点有点迷失在我的帖子的其余部分,所以我想再次强调一下:

在很多地方,VB.Net与C#共存。我认为你没有像C#那样看到尽可能多的VB.Net商店。它不是那么受欢迎,许多VB.Net商店转移到VB.Net只是作为过渡状态,而程序员也学习C#。 在这些混合环境中,如果在新代码中严格禁止使用旧的VB函数,那就很有意义了。你永远不知道什么时候需要移动一个模块,并且有一些心灵分享必须能够同时理解这两种风格的开销。所以不理解两者都是一个坏主意。

答案 1 :(得分:4)

嗯,我想你必须从表面上看待它们。我主要是一名C#程序员,但在过去的6-8周内一直致力于VB.NET Web应用程序。

我对裤子估计的位置表明使用转换函数(如CInt,CDate等)与使用Convert.Toxxx方法一样快。

我的建议是:如果它变得更容易,并且它没有性能损失那么就去吧!我也会教他们.NET方法,让用户决定。

BTW,作为C#家伙,我喜欢Cxxx例程的简易性。仅仅因为它们仅在VB.NET中可用并不意味着你不应该使用它们(恕我直言)。课程的马匹和所有这些。

答案 2 :(得分:4)

VB6程序员在转向VB.NET时已经学到了很多东西。为什么不让他们首先使用VB函数,但要教他们.NET框架版本。之后他们可以切换到.NET框架功能,特别是如果他们可能也需要使用C#。

编辑(很久以后):两位着名的VB大师采取反对意见!

  • Francesco Balena(在他的畅销书Programming Microsoft Visual Basic 2005: The Language中)建议ex-VB6开发人员在对新语言感到满意时尽快学习.NET语法,并尽可能避免在Microsoft.VisualBasic命名空间中使用方法和类[页。 100]。他的观点是,一般来说,原生.NET方法提供了更好的灵活性,如果您以后需要使用C#或其他.NET语言,那么学习它们就是一种投资。
  • Dan Appleman(他的热门书籍Moving to VB.NET: Strategies, Concepts, and Code)建议您随意使用本机Microsoft.VisualBasic命名空间,只避免使用Microsoft.VisualBasic.Compatibility.VB6命名空间中的那些命名空间[页。 265]。他的观点是Microsoft.VisualBasic是.NET框架的核心部分。

答案 3 :(得分:3)

如果您想教授可以在语言之间来回移动的.Net框架最佳实践,我建议删除Microsoft.VisualBasic的全局导入。这实际上迫使你做一个Microsoft.VisualBasic.Trim()等..而不仅仅是“修剪()”。

如果我没有弄错的话,在Visual Studio 2008中,您现在可以在vb.net中一起删除所有“纯”.Net模式的引用,这样可以更容易地在语言之间来回移动。

如果你只是教vb.net的人,就像上面提到的海报一样,使用它们,因为它们可用并且需要更少的打字。

答案 4 :(得分:2)

如果你提到框架方法和VB.NET函数,你应该提到的一件事是,尽管他们有时觉得它们是相同的,但它们实际上可以做出微妙的不同。

例如,字符串的equals运算符将空字符串视为与String.Empty相同(有关忘记时会发生什么的示例,请参阅The real cost of performance。)

此外,VB.NET函数通常为执行相关操作提供了一个很好的默认设置,但是在需要更多控制的地方,通常需要返回到Framework方法 - 例如,如果需要到make string conversions in a different culture

答案 5 :(得分:-3)

如果您正在教VB,那些函数是VB的一部分。如果您正在教授.Net Framework,那么这些功能不是框架的一部分。如果您正在尝试完成工作并且有可用的工具,请使用您的工具。