40
334 и ISO/IEC 23270. Компилятор C# входит в стандартную установку .NET
Framework [3.1].
C# относится к семье языков с C-подобным синтаксисом, из них его
синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию,
поддерживает полиморфизм, перегрузку операторов (в том числе операторов
явного и неявного приведения типа), делегаты, атрибуты, события, свойства,
обобщённые типы и методы, итераторы, анонимные функции с поддержкой
замыканий, LINQ, исключения, комментарии в формате XML.Переняв многое
от своих предшественников — языков C++, Java, Delphi, Модула и Smalltalk
— С#, опираясь на практику их использования, исключает некоторые модели,
зарекомендовавшие себя как проблематичные при разработке программных
систем, например, C# не поддерживает множественное наследование классов
(в отличие от C++).
C# разрабатывался как язык программирования прикладного уровня для
CLR и, как таковой, зависит, прежде всего, от возможностей самой CLR. Это
касается, прежде всего, системы типов C#, которая отражает BCL.
Присутствие или отсутствие тех или иных выразительных особенностей языка
диктуется тем, может ли конкретная языковая особенность быть
транслирована в соответствующие конструкции CLR. Так, с развитием CLR от
версии 1.1 к 2.0 значительно обогатился и сам C#; подобного взаимодействия
следует ожидать и в дальнейшем. Однако эта закономерность была нарушена
с выходом C# 3.0, представляющим собой расширения языка, не опирающиеся
на расширения платформы .NET. CLR предоставляет C#, как и всем другим
.NET-ориентированным языкам, многие возможности, которых лишены
«классические» языки программирования. Например, сборка «мусора» не
реализована в самом C#, а производится CLR для программ, написанных на C#
точно так же, как это делается для программ на VB.NET, J# и др.