C#处理DateTime时的纯函数警告

示例

维基百科目前定义的纯函数如下:

  1. 给定相同的参数,该函数始终求值相同的结果值value(s)。函数结果值不能依赖于在程序执行进行时或在程序的不同执行之间可能改变的任何隐藏信息或状态,也不能依赖于来自I / O设备的任何外部输入。

  2. 结果评估不会引起任何语义上可观察到的副作用或输出,例如可变对象的突变或输出到I / O设备

作为开发人员,您需要了解纯方法,并且您会在很多领域中无意中发现这些方法。我已经看到很多初级开发人员正在使用DateTime类方法。其中许多都是纯净的,如果您不知道这些,可以感到惊讶。一个例子:

        DateTime sample = new DateTime(2016, 12, 25);
        sample.AddDays(1);
        Console.WriteLine(sample.ToShortDateString());

给出上面的示例,可以预期打印到控制台的结果为'26 / 12/2016',但实际上您的最终日期是相同的。这是因为AddDays是一种纯方法,不会影响原始日期。为了获得预期的输出,您必须将AddDays调用修改为以下内容:

        sample = sample.AddDays(1);