问题
Has anyone had a chance to dig into how F# Units of Measure work? Is it just type-based chicanery, or are there CLR types hiding underneath that could (potentially) be used from other .net languages? Will it work for any numerical unit, or is it limited to floating point values (which is what all the examples use)?
回答1:
According to a response on the next related blog post, they are a purely static mechanism in the F# compiler. So there is no CLR representation of the units data.
Its not entirely clear whether it currently works with non-float types, but from the perspective of the type system it is theoretically possible.
回答2:
The best (and I think official) place to find out about this is on Andrew Kennedy's blog.
Here are the (current) relevant posts.
- Units of Measure in F#: Part One, Introducing Units
- Units of Measure in F#: Part Two, Unit Conversions
- Units of Measure in F#: Part Three, Generic Units
- Units of Measure in F#: Part Four, Parameterized Types
As I said in the post that your answerer referred to, this is most definitely something that you CAN'T do in C# (though I wish you could).
来源:https://stackoverflow.com/questions/40845/how-do-f-units-of-measure-work