Является ли этот AddMonths (число) правильным способом добавления месяца в C#? - PullRequest
0 голосов
/ 29 апреля 2020

Я знаю, что вы можете добавить месяцы, используя AddMonths(number), но я отлаживал код, который не присваивает AddMonths(number) переменной DateTime напрямую.

var dat = new DateTime(2015, 12, 31);

//I am sure this will add 6 months
dat = dat.AddMonths(6);

//I am not sure what this code does
dat.AddMonths(6);

Последнее предложение неверно? Я думаю, что это ничего не делает, но я не уверен.

Если это так, я хочу понять, почему он ничего не делает и почему не помечен как неправильный код в Visual Studio.

NET скрипка, ничего не делает .

Ответы [ 2 ]

3 голосов
/ 29 апреля 2020

Если вы проверите определение методов AddMonths, вы найдете следующее:

publi c DateTime AddMonths (int месяцы);

, что означает, что метод возвращает новый DateTime с добавленными месяцами. Второй вызов просто вызывает AddMonths для возвращенного DateTime, и вы не используете новое возвращаемое значение, поэтому кажется, что ничего не произошло, поэтому нет ничего недопустимого.

Попробуйте запустить приведенный ниже код, я думаю, что это все прояснит

using System;

public class Program
{
    public static void Main()
    {
        var dat = new DateTime(2015, 12, 31);
        //I am sure this will add 6 months
        dat = dat.AddMonths(6);
        Console.WriteLine(dat);
        Console.WriteLine(dat.AddMonths(6));    
        Console.WriteLine(dat); 
    }
}

В заключение добавлю, что нет смысла вызывать метод DateTime.AddMonths(x) без работы с возвращаемым значением, поскольку он не меняет DateTime что вы переходите к нему.

0 голосов
/ 29 апреля 2020

В вопросе есть две строки кода: одна с заданием и одна без. Эта строка:

dat.AddMonths(6);

без присвоения все еще создает новое значение DateTime в течение шести месяцев после существующего значения dat, как и другая строка с назначением. Но затем он выбрасывает новое значение DateTime. Значение возвращается из метода, но ничего не ждет его получения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...