Продолжительность жизни нового языка или среды разработки сильно ограничена, если он или она игнорируют унаследованные системы и программы, предоставляя лишь средства для написания новых систем. Независимо от привлекательности новой технологии ее создатели должны учесть, что какое-то время ей придется сосуществовать со старой технологией. Поэтому команды разработчиков .NET и С# решили облегчить программистам взаимодействие с существующим кодом посредством неуправляемого (unmanaged) кода, т. е. кода, которым нельзя управлять (контролировать) средствами поддержки периода выполнения .NET. В этой главе я расскажу о трех основных примерах неуправляемого кода в .NET, а именно:
- Platform Invocation Services позволяют коду .NET обращаться к функциям, структурам и даже к обратным вызовам в существующих неуправляемых библиотеках DLL;
- небезопасный код (unsafe code) позволяет С# -программисту использовать в приложениях такие конструкции, как указатели, отдавая управление этим кодом на откуп исполняющей среде .NET;
- взаимодействие с COM (COM interoperability) под этим понимается способность кода .NET применять компоненты СОМ, а приложений СОМ — компоненты .NET.