【发布时间】:2010-08-18 23:40:31
【问题描述】:
我以前用过 C#。但是,在我加入一个新公司后,我需要编写 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?
【问题讨论】:
-
你的例子都没有真正说明弱类型。也许是动态类型。
-
我知道这是旧的,但我认为这个评论是相关的。 OP 对布尔和位运算符有误解。在这方面,VB 的工作方式与 C# 完全相同。在 C# 中,
&&运算符用于短路布尔运算,&运算符用于非短路布尔运算和按位运算。它们 100% 类似于 VB 中的AndAlso和And。 C# 中的||和|以及 VB 中的OrElse和Or也是如此。
标签: vb.net