我以前用过C#。但是,在我加入一家新公司后,我需要编写vb.net。不过,我觉得写它很困难。因为我发现vb.net不是强类型的。它真的不是很强类型?或者任何设置?这里是一些例子。VB.NET弱类型?强类型的?
If (Me.Check1() And Me.Check2()) Then
从我的C#的知识,一旦Me.Check1()
返回false,Me.Check2()
将不会被执行。但我错了。 And
适用于按位操作。我应该使用AndAlso
进行布尔操作。所以它应该是
If (Me.Check1() AndAlso Me.Check2()) Then
的问题是,If (Me.Check1() And Me.Check2()) Then
仍然有效,并且没有编译错误。我真的很想知道我是否能够检查这种“不适当”的操作。
And
和AndAlso
只是案例之一。
有时候,我需要做的忽略案件的字符串比较。但是,每个人都会犯错误。有时,我做了
If (String.Compare(Me.string1, Me.string2, True)) Then
我想大家都知道这个问题。它应该是
If (String.Compare(Me.string1, Me.string2, True) = 0) Then
但是,我仍然无法在编译过程中检查这种情况。
我爱C#,因为它可以帮助我们找到编译过程中的诸多问题。但是,VB.NET让我非常困惑,并且在运行时和测试期间必须确定许多错误。
还有一个例子是,
Public Sub MySub(ByVal obj as Object)
Console.WriteLine(obj.MyProperty)
End Sub
在vb.net,这种说法仍然有效。为什么?为什么?为什么?有谁知道如何使用像C#一样的vb.net?
选项严格在 – 2010-08-18 23:45:24
关你真的例子说明弱类型。也许动态打字。 – recursive 2010-08-18 23:54:50
我知道这是旧的,但我认为这个评论是相关的。 OP对布尔运算符和按位运算符存在误解。 VB在这方面的工作方式与C#完全相同。在C#中你有''&&运营商短路布尔运算,你有'&'运营商对非短路布尔运算和位运算。它们与VB中的“AndAlso”和“And”类似。 C#中的'||'和'|'以及VB中的“OrElse”和“Or”也是如此。 – jmcilhinney 2017-10-18 07:57:12