面向VB6程序员的VB.NET中的VB运行时函数

面向VB6程序员的VB.NET中的VB运行时函数,.net,vb.net,vb6,.net,Vb.net,Vb6,我正在准备一门关于VisualBasic2005的课程,目标是迁移到.NET平台的VisualBasic6程序员 我的主要关注点是教给我的学生在.NET中开发的最佳实践,我想知道是否考虑使用VB运行时函数VB.NET合法与否。 我已经读到VB.NET中的许多VB函数实际上调用了.NET Framework上的方法,因此它们的存在似乎主要是为了简化从早期版本的Visual Basic到VB.NET的转换。然而,似乎建议尽可能使用它们,因为它们声称在.NETFramework API之上进行了一些优

我正在准备一门关于VisualBasic2005的课程,目标是迁移到.NET平台的VisualBasic6程序员

<>我的主要关注点是教给我的学生在.NET中开发的最佳实践,我想知道是否考虑使用VB运行时函数VB.NET合法与否。 我已经读到VB.NET中的许多VB函数实际上调用了.NET Framework上的方法,因此它们的存在似乎主要是为了简化从早期版本的Visual Basic到VB.NET的转换。然而,似乎建议尽可能使用它们,因为它们声称在.NETFramework API之上进行了一些优化


你对此有什么看法

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

好吧,我想你必须从表面上看这些工具。我主要是一名C#程序员,但在过去6-8周里一直在开发VB.NET web应用程序

我的估计表明,使用诸如CInt、CDate等转换函数与使用Convert.Toxxx方法一样快

我的建议是:如果这样做更容易,而且没有性能损失,那就去做吧!我也会教他们.NET方法,让用户自己决定


顺便说一句,作为一个C#guy,我喜欢Cxxx例程的简单性。仅仅因为它们只在VB.NET中可用,并不意味着你不应该使用它们(IMHO)。在我的位置上,我必须经常在C#和VB.Net之间来回移动。考虑到这一点,我们真的不喜欢旧的VB函数,尤其是字符串函数:
Trim()、Replace()、Len()、UCase()
,等等。它们在.Net程序中看起来很奇怪,我不想在我必须处理的代码中看到它们

唯一的例外可能是
Len()。在这种情况下,将
Len(字符串)
读取为字符串的
长度似乎是有意义的。在其他的例子中,它更多的是由字符串执行的操作,因此我想看看。(点)符号

另一方面,我很难摆脱转换操作符:
CStr、CInt、CDbl等

我不能告诉你为什么我喜欢一种而不喜欢另一种;这可能是因为我发现Convert.To\uuu()过于冗长,或者可能与它们是运算符而不是函数有关

编辑
这一点在我的文章的其余部分被忽略了,所以我想再次强调:


在很多地方,VB.Net与C#共存。我认为你不会像看到C#那样看到那么多只支持VB.Net的商店。它只是不那么流行,很多VB.Net商店都迁移到VB.Net,作为一种过渡状态,而程序员也学习C。在这些混合环境中,如果旧的VB函数在新代码中被严格禁止,这是非常有意义的。你永远不知道什么时候需要移动一个模块,并且必须能够同时浏览这两种样式,这会带来一些思想共享开销。因此,不同时理解这两种语言确实是个坏主意。

如果您想教授可以在两种语言之间来回移动的.Net framework最佳实践,我建议删除Microsoft.VisualBasic的全局导入。这实际上迫使您执行Microsoft.VisualBasic.Trim()等操作。。而不仅仅是“Trim()”

如果我没有弄错的话,在VisualStudio2008中,您现在可以删除vb.Net中“pure.Net”模式的所有引用,这使得在语言之间来回移动更加容易


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

在迁移到vb.net的过程中,VB6程序员可以学到很多东西。为什么不让他们先使用VB函数,然后教他们.NET framework版本呢。之后,他们可以切换到.NET framework函数,特别是如果他们可能也需要使用C#的话

编辑(很久以后):两位著名的VB大师持相反的观点

  • Francesco Balena(在他的畅销书中)建议前VB6开发人员在熟悉新语言后尽快学习.NET语法,并尽可能避免在Microsoft.VisualBasic命名空间中使用方法和类[p.100]。他的观点是,一般来说,原生的.NET方法提供了更好的灵活性,如果您以后需要使用C#或其他.NET语言,学习它们是一项投资
  • Dan Appleman(在他的畅销书中)建议您可以随意使用本机的Microsoft.VisualBasic命名空间,避免只使用Microsoft.VisualBasic.Compatibility.VB6命名空间中的命名空间[p.265]。他的观点是Microsoft.VisualBasic是.NET框架的核心部分

如果同时提到框架方法和VB.NET函数,您可能应该提到的一件事是,尽管它们有时感觉是一样的,但实际上它们可以做细微的不同

例如,字符串的equals运算符将空字符串视为与string.Empty相同的字符串(有关忘记时发生的情况的示例,请参阅!)


此外,VB.NET函数通常为执行相关操作提供良好的默认设置,但如果需要更多控制,则通常需要返回框架方法-例如,如果需要的话。

实际上,这些方法是框架的一部分。如果需要,您甚至可以从C#中使用它们。添加Microsoft.VisualBasic的使用指令,您也可以从C#中使用它们。感谢您突出显示这两本书,非常有趣。如果您是一名VB6程序员,并且在m中学习较晚,那么这两本书都值得一读