我試圖將一個布爾值框分享給我的代碼。我在使用加寬運算符(C#中的隱式運算符)時遇到了一些問題。使用布爾值的加寬運算符
Public Class CancellationToken
Public Property IsCancelled As Boolean
Public Shared Widening Operator CType(a As CancellationToken) As Boolean
Return a.IsCancelled
End Operator
End Class
下面的代碼工作正常:
Sub DoIt(IsCancelled As CancellationToken)
Do Until IsCancelled
...
Loop
End Sub
但這塊報道編譯時錯誤:操作「或」沒有爲類型「的CancellationToken」定義「布爾」。
Sub DoIt(IsCancelled As CancellationToken)
Dim ContentLength As Long = ...
Do Until IsCancelled OrElse ContentLength = 0
...
Loop
End Sub
很明顯,它被評估爲ContentLength = 0
布爾值。鑑於OrElse
期望在每一側布爾,爲什麼不是IsCancelled
隱式轉換爲布爾?
創建IsTrue
,IsFalse
,Or
和And
經營者也不解決問題。我已啓用Option Explicit和Option Strict。
此代碼看起來像你在努力工作給我。爲什麼不使用IsCancelled公共屬性。在這種情況下,「直到IsCancelled.IsCancelled」(不幸的參數名稱) –
請注意,它*只是在C#中工作* ... –
@ConradFrix。純粹的美學。我可能會退回到像Token.IsCancelled',但我很好奇,爲什麼這不起作用。 –