Verifiably type-safe code passes the CLR's verification without throwing exceptions. C# and VB.NET produce verifiably type-safe code if you avoid unsafe constructs like pointers. Visual C++ with Managed Extensions defaults to unsafe code but can produce verifiable code if you avoid certain constructs. Not all .NET languages produce verifiable code by default.