我以前用過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