Type-safety of C#