Скачать презентацию Операторы и лямбда Скачать презентацию Операторы и лямбда

Лямбда выражения.Индексаторы.pptx

  • Количество слайдов: 5

Операторы => и ? ? => лямбда – оператор Þ имеет тот же приоритет, Операторы => и ? ? => лямбда – оператор Þ имеет тот же приоритет, что и оператор присваивания (=) и является правоассоциативным; x => x*x входные параметры (если таковые имеются) принимает параметр с именем x и возвращает значение x 2 delegate int del(int i); static void Main(string[] args) { del my. Delegate = x => x * x; int j = my. Delegate(5); //j = 25 } блок выражений или выписки

Лямбда – выражение имеет форму: (input parameters) => expression (x, y) => x == Лямбда – выражение имеет форму: (input parameters) => expression (x, y) => x == y Типы можно указать в явном виде (int x, string s) => s. Length > x Отсутствие входных параметров задаётся пустыми скобками. Лямбда операторов (или операторная лямбда) напоминает выражение-лямбду, за исключением того, что оператор (или операторы) заключается в фигурные скобки: (input parameters) => {statement; } delegate void Test. Delegate(string s); … Test. Delegate my. Del = n => { string s = n + " " + "World"; Console. Write. Line(s); }; my. Del("Hello"); Блочные лямбда – выражения // Блочное лямбда-выражение возвращает факториал // возвращаемого ему значения. Int. Op fact = n => { int r = 1; for (int i=1; i<=n; i++) r = i * r; return r; };

? ? оператор ? ? - оператор null-объединения и используется для указания значений по ? ? оператор ? ? - оператор null-объединения и используется для указания значений по умолчанию для типов значений и ссылочных типов, допускающих значение null. Результат оператора ? ? не может рассматриваться как константа, даже если оба его аргумента являются константами. class Null. Coalesce { static int? Get. Nullable. Int() { return null; } static string Get. String. Value() { return null; } static void Main() { int? x = null; //y = x, если x != null, иначе y = -1. int y = x ? ? -1; //i = значение метода, если возвращаемое значение не null, иначе присвоить значение по умолчанию default(int); int i = Get. Nullable. Int() ? ? default(int); string s = Get. String. Value(); // отображает значение s, если s != null, иначе выводит «Unspecified» } } Console. Write. Line(s ? ? "Unspecified");

Индексаторы тип_элемента this[int индекс] { //Аксессор для получения данных. get { // Возврат значения, Индексаторы тип_элемента this[int индекс] { //Аксессор для получения данных. get { // Возврат значения, которое определяет индекс. } // Аксессор для установки данных set { // Установка значения, которое определяет индекс. } } Аксессор подобен методу, за исключением того, что в нем не объявляется тип возвращаемого значения или параметры. Аксессоры вызываются автоматически при использовании индексатора, и оба получают индекс в качестве параметра.

Индексаторы позволяют индексировать объекты аналогично массивам. Метод доступа get возвращает значение. Метод доступа set Индексаторы позволяют индексировать объекты аналогично массивам. Метод доступа get возвращает значение. Метод доступа set присваивает значение. Ключевое слово this используется для определения индексаторов. Ключевое слово value используется для определения значения, присваиваемого методом set индексатора. Индексаторы не должны использовать в качестве индекса целочисленное значение; конкретный механизм поиска определяет разработчик. Индексаторы можно перегружать. В этом случае для выполнения выбирается тот вариант индексатора, в котором точнее соблюдается соответствие его параметра и аргумента, указанного в качестве индекса. Индексаторы могут иметь более одного формального параметра, например при доступе к двухмерному массиву.