Kniga-Online.club
» » » » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Читать бесплатно Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

Неявная типизация локальных переменных

В главе 3 вы узнали о ключевом слове var языка С#. Оно позволяет определять локальную переменную без явного указания типа данных. Однако такая переменная будет строго типизированной, потому что компилятор определит ее корректный тип данных на основе начального присваивания. Вспомните показанный ниже код примера из главы 3:

static void DeclareImplicitVars()

{

  // Неявно типизированные локальные переменные.

  var myInt = 0;

  var myBool = true;

  var myString = "Time, marches on...";

  // Вывести имена лежащих в основе типов.

  Console.WriteLine("myInt is a: {0}", myInt.GetType().Name);

  Console.WriteLine("myBool is a: {0}",

    myBool.GetType().Name);

  Console.WriteLine("myString is a: {0}",

    myString.GetType().Name);

}

Это языковое средство удобно и зачастую обязательно, когда применяется LINQ. Как вы увидите на протяжении главы, многие запросы LINQ возвращают последовательность типов данных, которые не будут известны вплоть до этапа компиляции. Учитывая, что лежащий в основе тип данных не известен до того, как приложение скомпилируется, вполне очевидно, что явно объявить такую переменную невозможно!

Синтаксис инициализации объектов и коллекций

В главе 5 объяснялась роль синтаксиса инициализации объектов, который позволяет создавать переменную типа класса или структуры и устанавливать любое количество ее открытых свойств за один прием. В результате получается компактный (и по-прежнему легко читаемый) синтаксис, который может использоваться для подготовки объектов к потреблению. Также вспомните из главы 10, что язык C# поддерживает похожий синтаксис инициализации коллекций объектов. Взгляните на следующий фрагмент кода, где синтаксис инициализации коллекций применяется для наполнения List<T> объектами Rectangle, каждый из которых состоит из пары объектов Point, представляющих точку с координатами (х, у):

List<Rectangle> myListOfRects = new List<Rectangle>

{

  new Rectangle {TopLeft = new Point { X = 10, Y = 10 },

                 BottomRight = new Point { X = 200, Y = 200}},

  new Rectangle {TopLeft = new Point { X = 2, Y = 2 },

                 BottomRight = new Point { X = 100, Y = 100}},

  new Rectangle {TopLeft = new Point { X = 5, Y = 5 },

                 BottomRight = new Point { X = 90, Y = 75}}

};

Несмотря на то что использовать синтаксис инициализации коллекций или объектов совершенно не обязательно, с его помощью можно получить более компактную кодовую базу. Кроме того, этот синтаксис в сочетании с неявной типизацией локальных переменных позволяет объявлять анонимный тип, что удобно при создании проекций LINQ. О проекциях LINQ речь пойдет позже в главе.

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

Лямбда-выражения

Лямбда-операция C# (=>) подробно рассматривалась в главе 12. Вспомните, что данная операция позволяет строить лямбда-выражение, которое может применяться в любой момент при вызове метода, требующего строго типизированный делегат в качестве аргумента. Лямбда-выражения значительно упрощают работу с делегатами, т.к. сокращают объем кода, который должен быть написан вручную. Лямбда-выражения могут быть представлены следующим образом:

<i>АргументыДляОбработки =&gt;</i>

<i>{</i>

<i>  ОбрабатывающиеОператоры</i>

<i>}</i>

В главе 12 было показано, как взаимодействовать с методом FindAll() обобщенного класса List&lt;T&gt; с использованием трех разных подходов. После работы с низкоуровневым делегатом Predicate&lt;T&gt; и анонимным методом C# мы пришли к приведенной ниже (исключительно компактной) версии, в которой использовалось лямбда-выражение:

static void LambdaExpressionSyntax()

{

  // Создать список целочисленных значений.

  List&lt;int&gt; list = new List&lt;int&gt;();

  list.AddRange(new int[] { 20, 1, 4, 8, 9, 44 });

  // Теперь использовать лямбда-выражение С#.

  List&lt;int&gt; evenNumbers = list.FindAll(i =&gt; (i % 2) == 0);

  // Вывести четные числа

  Console.WriteLine(&quot;Here are your even numbers:&quot;);

  foreach (int evenNumber in evenNumbers)

   {

    Console.Write(&quot;{0}t&quot;, evenNumber);

  }

  Console.WriteLine();

}

Лямбда-выражения будут удобны при работе с объектной моделью, лежащей в основе LINQ. Как вы вскоре выясните, операции запросов LINQ в C# — просто сокращенная запись для вызова методов класса по имени System.Linq.Enumerable. Эти методы обычно всегда требуют передачи в качестве параметров делегатов (в частности, делегата Funс&lt;&gt;), которые применяются для обработки данных с целью выдачи корректного результирующего набора. За счет использования лямбда-выражений можно упростить код и позволить компилятору вывести нужный делегат. 

Расширяющие методы

Расширяющие методы C# позволяют оснащать существующие классы новой функциональностью без необходимости в создании подклассов. Кроме того, расширяющие методы дают возможность добавлять новую функциональность к запечатанным классам и структурам, которые в принципе не допускают построения подклассов. Вспомните из главы 11, что когда создается расширяющий метод, первый его параметр снабжается ключевым словом this и помечает расширяемый тип. Также вспомните, что расширяющие методы должны всегда определяться внутри статического класса, а потому объявляться с применением ключевого слова static. Вот пример:

Перейти на страницу:

Троелсен Эндрю читать все книги автора по порядку

Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Язык программирования C#9 и платформа .NET5 отзывы

Отзывы читателей о книге Язык программирования C#9 и платформа .NET5, автор: Троелсен Эндрю. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*