Жанры книг
Мы в соц.сетях
ParaKnig📚 » Компьютеры и Интернет » Базы данных » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
<< На главную

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

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

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 67 68 69 70 71 72 73 74 75 ... 642
Перейти на страницу:

                  // testItem2 имеет тип string

  }

  if (testItem2 is int myValue2)

  {

    Console.WriteLine($&quot;{myValue2} is an int&quot;);

                  // testItem2 имеет тип int

  }

  Console.WriteLine();

}

Внесение улучшений в сопоставление с образцом (нововведение в версии 9.0)

В версии C# 9.0 внесено множество улучшений в сопоставление с образцом, как показано в табл. 3.9.

В модифицированном методе IfElsePatternMatchingUpdatedInCSharp9() новые образцы демонстрируются в действии:

static void IfElsePatternMatchingUpdatedInCSharp9()

{

    Console.WriteLine(&quot;================ C# 9

                       If Else Pattern Matching Improvements

                       ===============/n&quot;);

    object testItem1 = 123;

    Type t = typeof(string);

    char c = 'f';

    // Образцы типов

    if (t is Type)

    {

        Console.WriteLine($&quot;{t} is a Type&quot;);

                 // t является Type

    }

    // Относительные, конъюнктивные и дизъюнктивные образцы

    if (c is &gt;= 'a' and &lt;= 'z' or &gt;= 'A' and &lt;= 'Z')

    {

        Console.WriteLine($&quot;{c} is a character&quot;);

                 // с является символом

    };

    //Parenthesized patterns

    if (c is (&gt;= 'a' and &lt;= 'z') or (&gt;= 'A' and &lt;= 'Z') or '.' or ',')

    {

        Console.WriteLine($&quot;{c} is a character or separator&quot;);

                 // c является символом или разделителем

    };

    //Negative patterns

    if (testItem1 is not string)

    {

        Console.WriteLine($&quot;{testItem1} is not a string&quot;);

                 // с не является строкой

    }

    if (testItem1 is not null)

    {

        Console.WriteLine($&quot;{testItem1} is not null&quot;);

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

                 // с не является null

    }

    Console.WriteLine();

}

Использование условной операции (обновление в версиях 7.2, 9.0)

Условная операция (?:), также называемая тернарной условной операцией, является сокращенным способом написания простого оператора if/else. Вот ее синтаксис:

условие ? первое_выражение : второе_выражение;

Условие представляет собой условную проверку (часть if оператора if/else). Если проверка проходит успешно, тогда выполняется код, следующий сразу за знаком вопроса (?). Если результат проверки отличается от true, то выполняется код, находящийся после двоеточия (часть else оператора if/else). Приведенный ранее пример кода можно было бы переписать с применением условной операции:

static void ExecuteIfElseUsingConditionalOperator()

{

  string stringData = &quot;My textual data&quot;;

  Console.WriteLine(stringData.Length &gt; 0

    ? &quot;string is greater than 0 characters&quot;       // строка длиннее 0 символов

    : &quot;string is not greater than 0 characters&quot;); // строка не длиннее 0 символов

  Console.WriteLine();

}

С условной операцией связаны некоторые ограничения. Во-первых, типы конструкций первое_выражение и второе_выражение должны иметь неявные преобразования из одной в другую или, что является нововведением в версии C# 9.0, каждая обязана поддерживать неявное преобразование в целевой тип.

Во-вторых, условная операция может использоваться только в операторах присваивания. Следующий код приведет к выдаче на этапе компиляции сообщения об ошибке "Only assignment, call, increment, decrement, and new object expressions can be used as a statement" (В качестве оператора могут применяться только выражения присваивания, вызова, инкремента, декремента и создания объекта):

stringData.Length &gt; 0

    ? Console.WriteLine(&quot;string is greater than 0 characters&quot;)

    : Console.WriteLine(&quot;string is not greater than 0 characters&quot;);

В версии C# 7.2 появилась возможность использования условной операции для возвращения ссылки на результат условия. В следующем примере задействованы две формы условной операции:

static void ConditionalRefExample()

{

  var smallArray = new int[] { 1, 2, 3, 4, 5 };

1 ... 67 68 69 70 71 72 73 74 75 ... 642
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Комментарии
Открыть боковую панель
Комментарии
Лариса
Лариса 11.03.2026 - 20:17
Странно,здесь имя девочки Аграфена,а на других сайтах я прослушала три книги этого цикла с именем Дарвина.Зачем менять имя и путать читателей? Опечатка- не Дарвина,  а  Дарина.
Григорий
Григорий 09.04.2025 - 22:24
Лучшая книга всех времен
Женя
Женя 02.04.2025 - 16:08
Любимая книга