当前位置:  开发笔记 > 编程语言 > 正文

从C#迁移到VB.Net

如何解决《从C#迁移到VB.Net》经验,为你挑选了2个好方法。

因此,作为这个全球金融市场的直接结果,我明天将开始作为VB.net开发人员的新工作.到目前为止,我一直在开发C#(java,vb6,sql,tibco等等)

所以问题是这个,有什么需要注意的,有没有人对编写好的vb.net代码有什么好的建议?

(关于应对薪水/潜在客户的任何其他建议都会受欢迎,但不是必要的;-))


只是一个快速更新,公司看起来非常好,目前的代码库看起来质量非常高.我开始适应VB的做事方式(虽然不能阻止自己添加分号!).再次感谢大家的有益建议.



1> Konrad Rudol..:

选项严格

最重要的是要在VB做的,在我的(绝对不是谦虚)的意见是使用Option Strict On 在任何时候(除了在每个文件的基础上,在非严格类型是有意义的,例如,由于您使用PIA与MS进行互操作Office)并在VS选项中启用它.

Option Strict On与...一起提供与Option Explicit OnC#大致相同的行为.切换后,它会在编译时删除大量类型检查,并允许在完全不相关的类型之间进行虚假,不必要和难以调试的隐式转换.

Option Strict Off使用COM API时有意义.Option Explicit Off 从来没有意义.这是愚蠢的(主要是VB6兼容性).

比较:=对比Is

需要注意的另一件事是:平等与参考测试.在C#中,您可以==同时使用它们.在VB中,你有不同的运算符:

Dim StringA = "Hello"
Dim StringB = Console.ReadLine()
Dim EqualContent = StringA = StringB
Dim EqualRefs = StringA Is StringB

现在根据用户输入,EqualContent可能是True; EqualRefs永远都是False.请注意,这Is在语义上等同于以下C#代码(通常没有人编写):

var equalRefs = object.ReferenceEquals(stringA, stringB);

我实际上认为这是VB相对于C#的优势,但很少需要.相反的IsIsNot.这里要注意的另一件事是通过=运算符的字符串比较实际上调用了VB运行时方法:Microsoft.VisualBasic.CompilerServices.Operators.CompareString.

这考虑了其他几个设置,尤其是Option Compare可能的设置Binary(默认,C#中的行为)或Text(不区分大小写的比较).

CType对比DirectCastTryCast

在其他一些情况下也会调用VB运行时,其中一个特别CType是VB中的通用转换运算符.我倾向于避免使用运算符,我强烈建议任何人都这样做,支持其他更明确的转换.这样做的原因是CType,在应用时尝试几种语义上非常不同的转换.这使得很难跟踪代码中究竟发生了什么,可能会引入输入错误.

首先,CType允许解析数字的字符串.这是一个通过操作更好地表达的概念,如在C#中.NumberType.Parse

而不是CType,我建议使用DirectCast哪个相当于C#强制转换,或者TryCast与C#的as转换相同.

另一个问题.检查对象x是否具有某种类型时T,必须使用以下语法:

If TypeOf x Is T Then …

请注意,这不会调用普通的引用比较运算符Is.相反,它使用自己的运算符构造TypeOf … Is ….但是你不能TypeOf … IsNot ….这可能是规范中的一个错误.

杂项....

有很多差异,一些有用(例如Select Case语句中的差异)和一些较少(例如Like基本通配符匹配的运算符......只是使用正则表达式).

与此相关的其他一些问题:

C#和VB.NET之间最重要的功能区别是什么?

C#.net和Visual Basic.net有什么区别?



2> splattne..:

只是一个小细节作为警告.如果在VB.NET中声明一个数组,括号之间的数字表示上限,而不是元素数:

Dim monthNames(11) As String
Console.Write(monthNames.Count)

输出为"12".

Dim monthNames(12) as String
Console.Write(monthNames.Count)

输出为"13".


我建议你阅读 Kathleen Dollard撰写的这篇博客文章.

C#编码器在编写VB之前应该知道什么

她的第一个建议是:

1)在开始之前克服尊重或戒烟.VB.NET是一门很棒的语言.


`Option Base 0`是默认值.您可以通过说"Dim monthNames(0到11)"来使数组声明稍微更具可读性,这清楚地说明了边界.
推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有