![]() |
Поиск
Последние проекты
2. Продвижение сайта
3. веб сайт
4. Доработка конфигурации 1с
5. Разработка небольшой И...
6. Веб дизайн магазина
7. Раскрутка сайта
8. Разработать информацио...
9. Альт Проект
10. Программирование и соп...
Последние вакансии
FreelanceHunt.com » Категории » Что такое C#?
{{title|C#}}
C# (произносится си-шарп) — язык программирования, сочетающий объектно-ориентированные и аспектно-ориентированные концепции. Разработан в 1998—2001 годах группой инженеров под руководством Андерсa Хейлсбергa в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET. Компилятор с C# входит в стандартную установку самой .NET, поэтому программы на нём можно создавать и компилировать даже без инструментальных средств вроде Visual Studio.
C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к С++ и Java. Язык имеет строгую статическую типизацию, поддерживает полиморфизм, перегрузку операторов, указатели на функции-члены классов, атрибуты, события, свойства, исключения, комментарии в формате XML.
Переняв многое от своих предшественников — языков С++, Delphi, Модула и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов (в отличие от C++) или вывода типов (реализовано в .NET Framework 3.0).
Особенности языка
C# разрабатывался как язык программирования прикладного уровня для CLR и, как таковой, зависит, прежде всего, от возможностей самой CLR. Это касается, прежде всего, системы типов C#, которая отражает FCL. Присутствие или отсутствие тех или иных выразительных особенностей языка диктуется тем, может ли конкретная языковая особенность быть транслирована в соответствующие конструкции CLR. Так, с развитием CLR от версии 1.1 к 2.0 значительно обогатился и сам C#; подобного взаимодействия следует ожидать и в дальнейшем. (Однако эта закономерность будет нарушена с выходом C# 3.0, представляющим собой расширения языка, не опирающиеся на расширения платформы .NET.) CLR предоставляет C#, как и всем другим .NET-ориентированным языкам, многие возможности, которых лишены «классические» языки программирования. Например, сборка мусора не реализована в самом C#, а производится CLR для программ, написанных на C# точно так же, как это делается для программ на VB.NET, J# и др.
Название языка
thumb|100px|right|[[Нота (музыка)|Нота до-диез]]
Символ # в названии языка можно интерпретировать и как две пары плюсов ++, намекающие на новый шаг в развитии языка по сравнению с C++ (подобно шагу от C к C++), и как музыкальный символ диез, вместе с буквой C составляющий в английском языке название ноты до-диез. Последнее и дало название языку. Несмотря на то, что символ # (октоторп) в действительности является символом для обозначения номера на большинстве клавиатур и отличается от символа диез ? (Unicode U+266F), Microsoft, как автор языка, неоднократно обращалась к своим клиентам с просьбой принять это допущение.
Стандартизация
Первая версия C# стандартизированa в ECMA (Standard ECMA-334 C# Language Specification, 3rd edition (June 2005)) и ISO (ISO/IEC 23270:2003, Information technology — C# Language Specification).
Базируясь на этой спецификации, известно, как минимум, о двух независимых реализациях C#, находящихся в настоящее время на различных стадиях разработки
- Mono, начата компанией Ximian и продолжена ее покупателем и преемником Novell.
- dotGNU и Portable.NET, разрабатываемые Free Software Foundation
В конце 2005 года Microsoft объявила о планах предать публичной спецификации вторую версию C#, но к настоящему времени эта спецификация еще не получила статус международного стандарта. Существующее положение ставит, таким образом, Microsoft в роль едва ли не единственной рыночной силы, развивающей 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++, они поддерживают некоторые дополнительные возможности и работают на уровне виртуальной машины. Вместе с тем, параметрами обобщенного типа не могут быть выражения.
- Новая форма итератора, позволяющая создавать сопрограммы с помощью ключевого слова
yield, подобно Python'у и Руби. - Анонимные методы, обеспечивающие функциональность замыкания.
- Оператор '??':
return obj1 ?? obj2;означает (в нотации C# 1.0)return obj1!=null ? obj1 : obj2;. - Обнуляемые ('nullable') типы-значения (обозначаемые вопросительным знаком, например,
int? i = null;), представляющие собой те же самые типы-значения, только могущие принимать также значениеnull. Такие типы позволяют улучшить взаимодействие с базами данных через язык SQL.
Версия 3.0
В июне 2004 года Андерс Хейлсберг впервые рассказал на сайте Microsoft о планируемых расширениях языка в C#3.0.http://channel9.msdn.com/ShowPost.aspx?PostID=10276 В сентябре 2005 года вышли проект спецификации C# 3.0 и бета-версия C# 3.0, устанавливаемая в виде дополнения к существующим Visual Studio 2005 и .NET 2.0. http://msdn.microsoft.com/vcsharp/future/
Новые возможности в версии 3.0
В C# 3.0 появились следующие радикальные добавления к языку:
- ключевые слова
select, from, where, позволяющие делать запросы из SQL, XML, коллекций {{nobr|и т. п.}} (запрос, интегрированный в язык, 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);
- Подразумеваемый тип локальной переменной:
var x = "hello";вместоstring x = "hello"; - Безымянные типы:
var x = new { Name = "James" }; - Методы-расширения — добавление метода в существующий класс с помощью ключевого слова
thisпри первом параметре статической функции.
C# 3.0 будет совместим с C# 2.0 по генерируемому MSIL-коду; улучшения в языке — чисто синтаксические и реализуются на этапе компиляции. Например, многие из интегрированных запросов LINQ можно уже сейчас осуществить, используя безымянные делегаты в сочетании с предикатными методами над контейнерами вроде List.FindAll и List.RemoveAll.
Пример «Hello, World»
using System;
class Example
{ static void Main()
{
Console.WriteLine("Hello, world!");
}
}
См. также
- Сравнение C# и Java
- Сравнение возможностей C# с другими языками см. в статье Сравнение языков программирования
- System.Object
Ссылки
- Ecma-334 - спецификация языка C# 2.0
- C# Language Specification Version 3.0 - Спецификация C# 3.0 (MSDN)
- C# Language на сайте MSDN — страница со ссылками на спецификации языка
- Первые шаги
- c2p.ru — Книги и статьи по C#
- RSDN.ru — статьи и форумы
- GotDotNet.ru — статьи и форумы по .NET и C#
- Full C# Online book
- Baltie - C# IDE for children and young Baltie
- Создание C# Controls — документация по C#
- paxScript.Net — Интерпретатор C# и VB.NET
Литература
- {{книга
|заглавие = C# 2005 и платформа .NET 3.0 для профессионалов
|оригинал = Professional C# 2005 with .NET 3.0
|автор = Кристиан Нейгел, Билл Ивьен, Джей Глинн, Карли Уотсон, Морган Скиннер
|ссылка =
|isbn = 978-5-8459-1317-3
|год = 2007
|место = М.
|издательство = «Диалектика»
}}
- {{книга
|автор = Эндрю Троелсен
|часть =
|заглавие = Язык программирования C# 2005 (Си Шарп) и платформа .NET 2.0
|оригинал = Pro C# 2005 and the .NET 2.0 Platform
|ссылка =
|издание = 3-е изд
|место = М.
|издательство = «Вильямс»
|год = 2007
|страницы = 1168
|isbn = 1-59059-419-3
}}
{{Языки_программирования}}
{{dotNET}}
Категория:Языки программирования
Категория:Платформа_.NET
ar:?? ????
az:C Sharp
bg:C Sharp
bn:?? ?????
bs:C ?arp
ca:C sostingut
cs:C Sharp
da:C Sharp
C-Sharp
C Sharp (programming language)
eo:C dieso (programlingvo)
es:C Sostenido
eu:C Sharp
fa:???????
fi:C sharp
C sharp
he:C sharp
hr:C sharp
hu:C Sharp
id:C sharp
is:C Sharp
it:C sharp
ja:C Sharp
ko:C ??
lt:C sharp
ms:C Sharp
nds:C sharp
new:?? ?????
nl:C sharp
no:C Sharp
pl:C Sharp
pt:C Sharp
ro:C sharp
simple:C sharp
sk:C Sharp
sr:C Sharp
sv:C-sharp
tg:C Sharp
th:???????????
tr:C Sharp programlama dili
uk:C Sharp
vi:C th?ng
zh:??

