.NET had this since 2.0 if not 1.0