Ben*_*Ben 7 .net c# extension-methods struct
我设想能够编写流畅的代码,为代码库中的数字增加意义.假设您想要一个数字来表示以英里为单位的距离.你有类似的东西:
用法:
var result = myMethod(100.Miles());
Run Code Online (Sandbox Code Playgroud)
我认为这比简单传递int更具可读性,而且你可以将边界检查应用于Miles类型.
扩展方法和结构实现:
static class IntExtensions
{
public static Miles(this int i) { get { return new Miles { Count = i }; } }
}
public struct Miles
{
public int Count { get; private set; } //optionally perform bounds checking
}
Run Code Online (Sandbox Code Playgroud)
这样的想法是否有用,或者在炎热的星期五为时已晚?
编辑:是的,没有扩展属性看起来不那么整洁......对于匆忙的无效代码抱歉.这只是一个想法.
这是一个有趣的想法,但在做这样的事情之前,我会要求一个非常强大的用例。一方面,一旦数字被转换为“英里”,您就不能再将其视为整数。您要么必须实现所有运算符,要么在对它们执行算术运算之前将英里转换回整数。如果没有充分的理由去做,那就是很多额外的工作。
不过,在某些情况下,这将是一个很好的策略。我想我记得听说过一个价值数百万美元的火箭或失败的东西NASA 曾经失去了一艘价值 1.25 亿美元的太空船,因为程序员将错误的度量单位传递给函数。这将帮助您避免该问题。
在相关说明中,您可能对 F# 感兴趣,它内置了对度量单位的支持。
| 归档时间: |
|
| 查看次数: |
1945 次 |
| 最近记录: |