C Sharp

C Sharp

Правильный заголовок этой статьи — C#. Он показан некорректно из-за технических ограничений.

C# (произносится си-шарп) — объектно-ориентированный язык программирования. Разработан в 19982001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET. Компилятор с C# входит в стандартную установку самой .NET, поэтому программы на нём можно создавать и компилировать даже без инструментальных средств, вроде Visual Studio.

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# и др.

[править] Название языка

Нота до-диез

Символ # (октоторп) в названии языка можно интерпретировать и как две пары плюсов ++;++, намекающие на новый шаг в развитии языка по сравнению с C++ (подобно шагу от C к C++), и как музыкальный символ диез, вместе с буквой C составляющий в английском языке название ноты до-диез (англ. C sharp). Октоторп # часто называют «шарпом» (от англ. sharp) из-за его схожести с диезом ♯, отсюда и название языка — «Си шарп».

[править] Стандартизация

C# стандартизирован в ECMA[1] и ISO[2].

Известно, как минимум, о двух независимых реализациях C#, базирующихся на этой спецификации и находящихся в настоящее время на различных стадиях разработки:

[править] Версии

[править] Версия 1.0

Проект C# был начат в декабре 1998 и получил кодовое название COOL (C-style Object Oriented Language). Версия 1.0 была анонсирована вместе с платформой .NET в июне 2000 года, тогда же появилась и первая общедоступная бета-версия; C# 1.0 окончательно вышел вместе с Microsoft Visual Studio .NET в феврале 2002 года.

Первая версия C# напоминала по своим возможностям Java 1.4, несколько их расширяя: так, в C# имелись свойства (выглядящие в коде как поля объекта, но на деле вызывающие при обращении к ним методы класса), индексаторы (подобные свойствам, но принимающие параметр как индекс массива), события, делегаты, циклы foreach, структуры, передаваемые по значению, автоматическое преобразование встроенных типов в объекты при необходимости (boxing), атрибуты, встроенные средства взаимодействия с неуправляемым кодом (DLL, COM) и прочее.

Кроме того, в C# решено было перенести некоторые возможности C++, отсутствовавшие в Java: беззнаковые типы, перегрузку операторов (с некоторыми ограничениями, в отличие от C++), передача параметров в метод по ссылке, методы с переменным числом параметров, оператор goto. Также в C# оставили ограниченную возможность работы с указателями — в местах кода, специально обозначенных словом unsafe и при указании специальной опции компилятору.

[править] Версия 2.0

Проект спецификации C# 2.0 впервые был опубликован Microsoft в октябре 2003 года; в 2004 году выходили бета-версии (проект с кодовым названием Whidbey), C# 2.0 окончательно вышел 7 ноября 2005 года вместе с Visual Studio 2005 и .NET 2.0.

Новые возможности в версии 2.0
  • Частичные типы (разделение реализации класса более чем на один файл).
  • Обобщённые, или параметризованные типы (generics). В отличие от шаблонов C++, они поддерживают некоторые дополнительные возможности и работают на уровне виртуальной машины. Вместе с тем, параметрами обобщенного типа не могут быть выражения, они не могут быть полностью или частично специализированы, не поддерживают шаблонных параметров по умолчанию, от шаблонного параметра нельзя наследоваться, и т. д.[3]
  • Новая форма итератора, позволяющая создавать сопрограммы с помощью ключевого слова yield, подобно Python и Ruby.
  • Анонимные методы, обеспечивающие функциональность замыкания.
  • Оператор '??': return obj1 ?? obj2; означает (в нотации C# 1.0) return obj1!=null ? obj1 : obj2;.
  • Обнуляемые ('nullable') типы-значения (обозначаемые вопросительным знаком, например, int? i = null;), представляющие собой те же самые типы-значения, только могущие принимать также значение null. Такие типы позволяют улучшить взаимодействие с базами данных через язык SQL.
  • Возможность создавать хранимые процедуры, триггеры и даже типы данных на .Net языках (в том числе и на C#).
  • Поддержка 64-разрядных вычислений, что кроме всего прочего, позволяет увеличить адресное пространство и использовать 64-разрядные примитивные типы данных.

[править] Версия 3.0

В июне 2004 года Андерс Хейлсберг впервые рассказал на сайте Microsoft о планируемых расширениях языка в C#3.0.[4] В сентябре 2005 года вышли проект спецификации C# 3.0 и бета-версия C# 3.0, устанавливаемая в виде дополнения к существующим Visual Studio 2005 и .NET 2.0. Окончательно эта версия языка вошла в Visual Studio 2008 и .NET 3.5.

Новые возможности в версии 3.0

В C# 3.0 появились следующие радикальные добавления к языку:

  • ключевые слова select, from, where, позволяющие делать запросы из SQL, XML, коллекций и т. п. (запрос, интегрированный в язык, Language Integrated Query, или LINQ)
  • Инициализация объекта вместе с его свойствами:
Customer c = new Customer(); c.Name = "James";
можно записать как
Customer c = new Customer { Name = "James" };
listOfFoo.Where(delegate(Foo x) { return x.size > 10; });
теперь можно записать как
listOfFoo.Where(x => x.size > 10);
  • Деревья выражений:
лямбда-выражения теперь могут представляться в виде структуры данных, доступной для обхода во время выполнения, тем самым позволяя транслировать строго типизированные C#-выражения в другие домены (например, выражения SQL).
  • Вывод типов локальной переменной: var x = "hello"; вместо string x = "hello";
  • Безымянные типы: var x = new { Name = "James" };
  • Методы-расширения — добавление метода в существующий класс с помощью ключевого слова this при первом параметре статической функции.
 
public static class StringExtensions
{
  public static int ToInt32(this string val)
  {
    return Int32.Parse(val);
  }
}
// ...
string x = 10;
int y = x.ToInt32();
  • Автоматические свойства: компилятор сгенерирует закрытое (private) поле и соответствующие аксессор и мутатор для кода вида
public string Name { get; private set; }

C# 3.0 совместим с C# 2.0 по генерируемому MSIL-коду; улучшения в языке — чисто синтаксические и реализуются на этапе компиляции. Например, многие из интегрированных запросов LINQ можно осуществить, используя безымянные делегаты в сочетании с предикатными методами над контейнерами вроде List.FindAll и List.RemoveAll.

[править] Версия 4.0

Превью C# 4.0 было представлено в конце 2008 года, вместе с CTP-версией Visual Studio 2010.

Предполагается, что Visual Basic 10.0 и C# 4.0 будут выпущены в начале 2010 года, одновременно с выпуском Visual Studio 2010.

Новые возможности в версии 4.0[5]
  • Возможность использования позднего связывания, для использования:
    • с языками с динамической типизацией (Python, Ruby)
    • с COM-объектами
    • отражения (reflection)
    • объектов с изменяемой структурой (DOM). Появляется ключевое слово dynamic.
  • Именованные и опциональные параметры
  • Новые возможности COM interop
  • Ковариантность и контрвариантность
  • Контракты в коде (Code Contracts)

Примеры:

dynamic calc = GetCalculator();
int sum = calc.Add(10, 20);  // Динамический вызов
public void SomeMethod(int x, int y = 5, int z = 7);  // Опциональные параметры

[править] Пример «Hello, World»

class Example
{
    static void Main()
    {
        System.Console.WriteLine("Hello, World!");
        System.Console.ReadKey();
    }
}

[править] Реализации

Существует несколько реализаций C#:

  • Реализация C# в виде компилятора csc.exe включена в состав .NET Framework.
  • В составе проекта Rotor (Shared Source Common Language Infrastructure) компании Microsoft
  • Проект Mono включает в себя реализацию C# с открытым исходным кодом
  • Проект DotGNU также включает компилятор C# с открытым кодом
  • DotNetAnywhere[6] — ориентированная на Embedded-системы реализация CLR, поддерживает практически всю спецификацию C# 2.0

[править] См. также

[править] Примечания

[править] Литература

  • Эндрю Троелсен. С# 2008 и платформа .NET 3.5 Framework = Pro C# 2008 and the .NET 3.5 Framework. — 4-е изд. — М.: Вильямс, 2009. — С. 1368. — ISBN 978-5-8459-1589-4
  • Герберт Шилдт. C# 3.0: полное руководство = C# 3.0: The Complete Reference. — 4-е изд. — М.: Вильямс, 2009. — С. 992. — ISBN 978-5-8459-1565-8
  • Кристиан Нейгел, Карли Уотсон и др. Visual C# 2008: базовый курс. Visual Studio® 2008 = Beginning Visual C# 2008. — М.: Диалектика, 2009. — ISBN 978-5-8459-1317-3
  • Кристиан Нейгел, Билл Ивьен и др. C# 2008 и платформа .NET 3.5 для профессионалов = Professional C# 2008. — М.: Диалектика, 2008. — ISBN 978-5-8459-1458-3

[править] Ссылки


Источник — «C Sharp»

<< назад   вперед >>

Look at other dictionaries:

  • C-sharp — (also expressed C# or Cmusic sharp) may refer to: C-sharp major or C-sharp minor, the musical scales Cmusic sharp, the musical pitch C# programming language … (Wikipedia)
  • Prelude in C-sharp minor (Rachmaninoff) — Prelude i C-sharp mior ( _ru. Прелюдия), op. 3, o. 2, is oe of Sergei Rachmaioff's most famous compositios. It is a terary (ABA) prelude i C-sharp mior, 62 measures log, ad part of a set of five pieces etitled "Morceaux de…
  • C-sharp major — Ifobox Scale scale_ame Cmusic sharp major relative Amusic sharp mior parallel Cmusic sharp mior eharmoic Dmusic flat major first_pitch Cmusic sharp secod_pitch Dmusic sharp third_pitch Emusic sharp (F) fourth_pitch Fmusic sharp…
  • C-sharp minor — Ifobox Scale scale_ame Cmusic sharp mior relative E major parallel Cmusic sharp major first_pitch C# secod_pitch Dmusic sharp third_pitch E fourth_pitch Fmusic sharp fifth_pitch Gmusic sharp sixth_pitch A seveth_pitch BCmusic sharp mior…
  • C Sharp (programming language) — ifobox programmig laguage ame C# year 2001 desiger Microsoft Corporatio latest_release_versio 3 latest_release_date 19 November 2007 implemetatios .NET Framework, Moo, DotGNU iflueced_by Object Pascal, C++, Modula-3, Java, Eiffel…
  • Dudley C. Sharp — was Secretary of the Air Force from December 11, 1959 util Jauary 20, 1961, all uder presidet Eisehower. Backgroud So of Walter Beoa Sharp, Dudley C. Sharp graduated from Priceto Uiversity i 1928 ad joied the…
  • Comparison of C Sharp and Visual Basic .NET — The origial .NET Framework distributios from Microsoft icluded several laguage-to-IL compilers, icludig the two primary laguages: C# ad Visual Basic. There is heated debate amog the greater .NET commuity about which laguage is better…
  • C-Sharp — Dieser Artikel behadelt die Programmiersprache C#. I der Musik bezeichet C# (bzw. C♯) de To Cis. C# Paradigme: strukturiert, imperativ, objektorietiert, fuktioal Erscheiugsjahr: 2001 Etwickler: Microsoft Aktuelle Versio: 3.5 SP1… (Deutsch Wikipedia)
  • C Sharp — Dieser Artikel behadelt die Programmiersprache C#. I der Musik bezeichet C# (bzw. C♯) de To Cis. C# Paradigme: strukturiert, imperativ, objektorietiert, fuktioal Erscheiugsjahr: 2001 Etwickler: Microsoft Aktuelle Versio: 3.5 SP1…
  • Microsoft Visual C-Sharp Express — Visual Studio Etwickler: Microsoft Corporatio Aktuelle Versio: 2008 (19. November 2007) Betriebssystem: Widows Kategorie: IDE Lizez: Proprietär Deutschsprachig: ja Visual Studio 2008 Visual Studio ist eie vo der Firma Microsoft…
  • Sprachelemente von C-Sharp — Dieser Artikel bietet eie Übersicht eiiger Sprachelemete vo C#. Ihaltsverzeichis 1 Bedigte Ausführug (if, else, switch)2 Schleife (for, do, while, foreach)3 Die Sprugbefehle break, cotiue, goto ud retur4 Die usig Aweisug5…