.net 度量单位:如何将字节表示为8位?

.net 度量单位:如何将字节表示为8位?,.net,f#,.net,F#,我尝试了以下方法,但无效: //位 [] b型 //字节 [] 类型B=B*8//预期的计量单位,而不是类型;类型中的文本无效 //千字节 [] 键入KB=B^3//尽管如此,这仍然有效 谢谢在使用度量单位时,您可以指定的公式并不表示转换,而是表示派生单位。例如,您可以定义为N/m^2,但这不是转换-它只是表示具有这两个单位的数值是相同的 你的定义不允许你实际做你期望的事情。例如,下面给出了一个编译时错误: [<Measure>] type B [<Measure>]

我尝试了以下方法,但无效:

//位
[]
b型
//字节
[]
类型B=B*8//预期的计量单位,而不是类型;类型中的文本无效
//千字节
[]
键入KB=B^3//尽管如此,这仍然有效

谢谢

在使用度量单位时,您可以指定的公式并不表示转换,而是表示派生单位。例如,您可以定义为N/m^2,但这不是转换-它只是表示具有这两个单位的数值是相同的

你的定义不允许你实际做你期望的事情。例如,下面给出了一个编译时错误:

[<Measure>]
type B

[<Measure>]
type KB = B^3

1000<B> = 1<KB>
[]
B型
[]
类型KB=B^3
1000 = 1
更有用的方法是使两个单元保持抽象并定义转换函数:

[<Measure>]
type B

[<Measure>]
type KB

let bToKB (b:int<B>) : int<KB> = b / 1000<B/KB>

bToKB 1000<B> = 1<KB>
[]
B型
[]
键入KB
设bToKB(b:int):int=b/1000
bToKB 1000=1