Информационные технологии
Операционные системы
Информационные технологии
Информационные технологии представляют собой широкий класс дисциплин и сфер деятельности, которые относятся к технологиям создания, хранения, управления, ... читать далее »
Статьи по ИТ
28.06.2009 15:03

Версии. Информационные технологии.

Версия 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++, они поддерживают некоторые дополнительные возможности и работают на уровне виртуальной машины. Вместе с тем, параметрами обобщенного типа не могут быть выражения, они не могут быть полностью или частично специализированы, не поддерживают шаблонных параметров по умолчанию, от шаблонного параметра нельзя наследоваться, и т.д[1].
    * Новая форма итератора, позволяющая создавать сопрограммы с помощью ключевого слова 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.[1] В сентябре 2005 года вышли проект спецификации C# 3.0 и бета-версия C# 3.0, устанавливаемая в виде дополнения к существующим Visual Studio 2005 и .NET 2.0.

Новые возможности в версии 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);

    * Вывод типов локальной переменной: 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 будут выпущены в конце 2009 года, одновременно с выпуском Visual Studio 2010.

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

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

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

© WIKI.RU, 2008–2017 г. Все права защищены.