因此,作为这个全球金融市场的直接结果,我明天将开始作为VB.net开发人员的新工作.到目前为止,我一直在开发C#(java,vb6,sql,tibco等等)
所以问题是这个,有什么需要注意的,有没有人对编写好的vb.net代码有什么好的建议?
(关于应对薪水/潜在客户的任何其他建议都会受欢迎,但不是必要的;-))
只是一个快速更新,公司看起来非常好,目前的代码库看起来质量非常高.我开始适应VB的做事方式(虽然不能阻止自己添加分号!).再次感谢大家的有益建议.
最重要的是要在VB做的,在我的(绝对不是谦虚)的意见是使用Option Strict On
在任何时候(除了在每个文件的基础上,在非严格类型是有意义的,例如,由于您使用PIA与MS进行互操作Office)并在VS选项中启用它.
Option Strict On
与...一起提供与Option Explicit On
C#大致相同的行为.切换后,它会在编译时删除大量类型检查,并允许在完全不相关的类型之间进行虚假,不必要和难以调试的隐式转换.
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#的优势,但很少需要.相反的Is
是IsNot
.这里要注意的另一件事是通过=
运算符的字符串比较实际上调用了VB运行时方法:Microsoft.VisualBasic.CompilerServices.Operators.CompareString
.
这考虑了其他几个设置,尤其是Option Compare
可能的设置Binary
(默认,C#中的行为)或Text
(不区分大小写的比较).
CType
对比DirectCast
和TryCast
在其他一些情况下也会调用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有什么区别?
只是一个小细节作为警告.如果在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是一门很棒的语言.