C# does not live in a closed world. It allows you access to different APIs, with the foremost being the NGWS Common Language Specification (CLS). The CLS defines a standard for interoperation between languages that adhere to this standard. To enforce CLS compliance, the compiler of C# checks that all publicly exported entities comply, and raises an error if they do not.

Of course, you also want to be able to access your older COM objects. The NGWS runtime provides transparent access to COM. Integration with legacy code is presented in , "Interoperating with Unmanaged Code."

OLE Automation is a special kind of animal. Anyone who ever created an OLE Automation project in C++ will have come to love the various Automation data types. The good news is that C# supports them, without bothering you with details.

Finally, C# enables you to inter operate with C-style APIs. Any entry point in a DLL—given its C-styledness—is accessible from your applications. This feature for accessing native APIs is called Platform Invocation Services (PInvoke),