Если вы проверите определение методов 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
что вы переходите к нему.