處理 DateTime 時的純函式警告

維基百科目前定義了一個純函式,如下所示:

  1. 在給定相同引數值的情況下,該函式始終評估相同的結果值。功能結果值不能取決於程式執行過程中或程式的不同執行之間可能發生變化的任何隱藏資訊或狀態,也不依賴於來自 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);