No hay necesidad de cálculos personalizados.
Utilice el método System.DateTime.DaysInMonth(yearNum, monthNum)
para conocer el número de días en un mes determinado (que también es el último día).
Es tan simple como:
//Get days in month 2 (Feb) of year 2011. Returns 28.
int daysInFeb2011 = System.DateTime.DaysInMonth(2011, 2);
La documentación de MSDN proporciona una muestra más completa y descriptiva:
const int July = 7;
const int Feb = 2;
// daysInJuly gets 31.
int daysInJuly = System.DateTime.DaysInMonth(2001, July);
// daysInFeb gets 28 because the year 1998 was not a leap year.
int daysInFeb = System.DateTime.DaysInMonth(1998, Feb);
// daysInFebLeap gets 29 because the year 1996 was a leap year.
int daysInFebLeap = System.DateTime.DaysInMonth(1996, Feb);