ブール値をボックス内で共有しようとしています。私は問題を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
明らかにそれはboolean型にContentLength = 0
を評価されています。 OrElse
は両側にブール値があると仮定すると、なぜIsCancelled
が暗黙的にブール値に変換されないのですか?
IsTrue
、IsFalse
、Or
、およびAnd
オペレータは、この問題を解決しません。私はOption ExplicitとOption Strictを有効にしています。
このコードは、あなたが私に懸命に働いているようです。なぜIsCancelled公共財産を使用しないのですか?この場合、Do Can not Is Cancelled.IsCancelled(そこに残念なパラメータ名)があります。 –
これは* C#で動作することに注意してください。 –
@ConradFrix。純粋に喘息。おそらく 'Token.IsCancelled'のようなものに落ちるでしょうが、なぜこれがうまくいかないのか不思議です。 –