这个简单的扩展方法是一个矩形,例如纯?
如果没有,为什么不呢?如果是,为什么?
[Pure]
public static Rectangle InflateCopy(this Rectangle r, float horizontal, float vertical)
{
r.X -= (int)horizontalAmount;
r.Y -= (int)verticalAmount;
r.Width += (int)horizontalAmount*2;
r.Height += (int)verticalAmount*2;
return r;
}
Run Code Online (Sandbox Code Playgroud)
根据维基百科 - 纯功能:
在计算机编程中,如果以下关于函数的语句都保持,则函数可以被认为是纯函数:
- 在给定相同参数值的情况下,该函数始终评估相同的结果值.功能结果值不能依赖于程序执行过程中或程序执行不同时可能发生的任何隐藏信息或状态,也不依赖于I/O设备的任何外部输入(通常见下文).
- 对结果的评估不会导致任何语义上可观察到的副作用或输出,例如可变对象的突变或输出到I/O设备(通常见下文).
表示类型或方法是纯的,也就是说,它不会进行任何可见的状态更改.
微软对纯方法的描述有点短,缺少一个关键部分,纯方法应该总是在给定相同输入参数的情况下评估相同的结果.
那么你的方法是纯粹的吗?
Rectangle是System.Drawing.Rectangle,这是一个struct,那么即使该方法似乎正在更改矩形,它只是更改它自己的私有副本,因此您将看不到任何可观察到的副作用方法.所以是的,这种方法很纯粹.
| 归档时间: |
|
| 查看次数: |
904 次 |
| 最近记录: |