336 {
337 try
338 {
342 int num3;
343 if (months >= 0)
344 {
345 int monthsInYear;
346 for (num3 = datePart + months; num3 > (monthsInYear =
GetMonthsInYear(num, 0)); num3 -= monthsInYear)
347 {
348 num++;
349 }
350 }
351 else if ((num3 = datePart + months) <= 0)
352 {
353 months = -months;
354 months -= datePart;
355 num--;
356 int monthsInYear;
358 {
359 num--;
360 months -= monthsInYear;
361 }
363 num3 = monthsInYear - months;
364 }
366 if (num2 > daysInMonth)
367 {
368 num2 = daysInMonth;
369 }
371 }
372 catch (ArgumentException)
373 {
374 throw new ArgumentOutOfRangeException("months", months, SR.ArgumentOutOfRange_AddValue);
375 }
376 }
override DateTime ToDateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, int era)
override int GetDaysInMonth(int year, int month, int era)
virtual int GetDatePart(long ticks, int part)
override int GetMonthsInYear(int year, int era)