Программирование C#, Java, Net - фото

Развитие языка C#


Оцените данную статью

Сегодня хотел бы рассмотреть, как развивался язык программирования C#, какие новые фичи появлялись и кратко опишу каждую. Думаю новичкам в .Net необходимо особенно внимательно изучить всё нижеописанное, станет понятно куда дальше гуглить. Некоторые темы уже подробно разобраны в моем блоге. Буду вести обзор C# начиная с версии 2.0. Итак, приступим.

Версия C# 2.0

    • Generics (или дженерики). Эта возможность позволила создавать универсальные шаблоны, обобщенные алгоритмы. Код стал безопаснее, быстрее и проще для чтения и сопровождения;
    • Iterators (итераторы) – средство, позволяющее достаточно сильно упростить создание перечислителей для последовательности(коллекции) чего-либо. Введена новая конструкция foreach. Появились generic-интерфейсы — IEnumerator, IEnumerable;
    • Anonymous methods(анонимные методы) – обеспечивает технику передачи блока кода как параметр делегата. Иными словами, инициализации делегатов телами методов. Пример:

    1. delegate void MyPrint(int number);
    2. MyPrint print = delegate(int number)
    3. {
    4.     Console.WriteLine(«This is anonymous method: {0}», number);
    5. };

  • Partial types(частичные классы) – возможность разбивать код класса(class) по нескольким файлам. В основном фича добавлена для упрощения жизни при кодогенерации. Посмотрите на исходники WinForms приложений( Visual Studio генерирует partial класс в файл *.Designer.cs);

Версия C# 3.0

    • var — новое ключевое слово в языке C#. Служит для определения типа локальной переменной из присваиваемого значения.

  1. var str = «some string»; // str принадлежит типу string

    • anonymous types(анонимные типы) — тип, у которого нет имени и он анонимен. Как же оперировать экземпляром такого типа? Для этого и нужен var.

  1. var anonymType = new { Name = “s”, number = 10};

    • extension methods (методы расширения) — средство расширения функционала у существующего класса. Подробнее здесь.
    • лямбда-выражения — новый способ реализации, инициализации делегатов. Это аналог анонимных методов из C# 2.0, с более кратким и приятным синтаксисом.
    • частичные методы — позволяют отделить определение от реализации. Они либо не имеют реализации, либо — только одну.

    1.     partial class MyProgram
    2.     {
    3.         static void Main()
    4.         {
    5.             partMethod();
    6.         }
    7.         static partial void partMethod();
    8.     }
    9.     partial class MyProgram
    10.     {
    11.        static partial void partMethod()
    12.        {
    13.                 //some realization
    14.        }
    15.     }

    • auto properties — свойства, которые являются своеобразной оберткой над приватной переменной. Оно не содержит в теле какой-либо логики.

  1. public SomeProperty { get; set; }

  • object initialization — новый синтаксис для инициализации коллекций и объектов

Отдельным пунктом упомяну о LINQ. Большинство нововведений, описанных выше, являются его основой, ядром.Linq — новый язык запросов для разного рода источников данных(xml,коллекции объектов, БД и т.д.). Например получить список всех нечетные чисел, отсортированных по убыванию из массива можно так:

    1. int[] array = { 1, 7, 4, 12, 9 };
    2. List<int> query = array.Where(x => x % 2 == 1).OrderByDescending(x => x).ToList();

Версия C# 4.0

    • dynamic — новый динамический тип данных. Проверка типа происходит не во время компиляции, а — выполнения
    • именованные и необязательные параметры для методов. об этом я писал ранее

    1. void Method(int first, int second, bool check = true){}
    2. //вызов метода так
    3. Method(1, 2);
    4. //либо так
    5. Method(second: 1, first: 10, check:false);

    • ковариантности и контравариантности обобщений — теперь generic следует правилам наследования

    1. interface IMyInterface1<out T> {}
    2. interface IMyInterface2<in T> {}

  • новые возможности для COM Interop

Версия C# 5.0

  • async,await — новые ключевые слова для упрощения работы с асинхронностью в коде

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *