我使用下面的函数来照亮颜色值的工作(这是在我的代码拉姆达,但不应该有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