Основы C#. Урок 2. Что такое NET Runtime?
Если перевести слова NET Runtime на русский язык, то мы получим что-то вроде "Среда выполнения". Именно вы этой среде и выполняется код, получаемый в результате компиляции программы написанной на C#. NET Runtime основын не на ассемблере (т. е. не на коде, родном для процессора), а на некотором промежуточном коде. Отдаленно он напоминает виртуальную Java машину. Только если в случае Java у нас был только один язык для виртуальной машины, то для NET Runtime таких языков может быть несколько. Теоретически программа для среды NET Runtime может выполняться под любой операционной системой, в которой NET Runtime установлена. Но на практике пока единственная платформа для этого - это Windows.
NET Runtime состоит из нескольких частей. Одна из них - это Common Language Runtime. Это, говоря кратко, это некоторый набор стандартов, котрые должны поддерживать все языки платформы .NET. Например, в предыдущих версиях Visual Studio была такая проблема, что разные языки по разному хранили данные одного по идее типа. Так, скажем, тип целого в Visual Basic'е занимал два байта, а в Visual C++ - четыре. А это порождало кучу проблем при совместном использовании языков. Так вот, Common Language Runtime как раз в частности и определяет стандартные для все языков .NET типы данных. И уже есть гарантии, что целый тип в одном языке будет в точности соответствовать одноименному типу в другом.
Еще одна важная часть NET Runtime - это набор базовых классов. Их очень много (порядка несколько тысяч). Кроме того, эти классы относятся не к конкретному языку, а к NET Runtime. Т. е. мы получаем набор классов, общий для всех языков .NET, что достаточно удобно.
Далее. Именно NET Runtime берет на себя некоторые рутинные функции. Например в нем организована сборка мусора. И если раньше программисту приходилось самому освобождать объекты, созданные динамически, то теперь эту задачу берет на себя среда NET Runtime. Еще одно свойство среды NET Runtime - это проверка типов. Означает это вот что. Когда программа выполняется, то в принципе некоторой функции можно подсунуть параметр неправильного типа. Скажем вместо целого подставить действительное число или еще что-нибудь в этом роде. Языки типа C++ свои параметры функций не проверяют, в результате чего записанная переменная большего размера может повредить чужую область памяти и программа может просто рухнуть. Еще классический пример на эту тему - это выход за пределы массива. В NET Runtime же такого невозможно. NET Runtime сама позаботится о проверке типов и других вещах.
Существует несколько языков для NET Runtime. В настоящее время это C#, VB.NET и Visual C++. Кроме того фирма Borland объявила, что ее продукты C++ Builder и Delphi тоже будут поддерживать NET Runtime.