我使用下面的函數來照亮顏色值的工作(這是在我的代碼拉姆達,但不應該有differende):與字節文字
Function ReduceDistanceTo255(ByVal i As Byte) As Byte
Return i + (255 - i) \ 2
End Function
它不會編譯,因爲編譯器將255
和2
解釋爲整數而不是字節,從而產生Integer
類型的結果。不幸的是,there is no Byte type character,所以我不能只寫255B
或類似的東西。
有幾個明顯的解決方法的問題:
Function ReduceDistanceTo255(ByVal i As Byte) As Byte
Return i + (CByte(255) - i) \ CByte(2)
End Function
和
Function ReduceDistanceTo255(ByVal i As Byte) As Byte
Return CByte(i + (255 - i) \ 2)
End Function
和
Function ReduceDistanceTo255(ByVal i As Byte) As Byte
Dim FF As Byte = 255
Dim two As Byte = 2
Return i + (FF - i) \ two
End Function
第一個就是難看,難以閱讀,因爲每文字需要是CByte
d。第二個以整數執行計算,然後將結果轉換爲Byte,這是正常的,但不像純字節操作那樣優雅。第三種解決方法不需要CByte
s,但它的缺點是顯而易見的。
我是否錯過了一些(優雅的)第四個選項,它允許我在沒有將公式與CBools混淆的情況下進行Byte-only-math?
我不是一個VB的傢伙,所以我不會在這坐裂的答案。但是,聽起來你已經覆蓋了所有的基地。你沒有提到的唯一的事情就是讓它具有所有的整數,並讓調用者擔心轉換爲字節。 – falstro 2009-12-07 12:32:01
我不認爲有更清晰的方法。我會用第二。這只是一個演員,所以我不明白什麼是大問題。 – Samuel 2009-12-07 12:34:33