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

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

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

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 57 58 59 60 61 62 63 64 65 ... 642
Перейти на страницу:

  string s1 = &quot;Hello!&quot;;

  string s2 = &quot;Yo!&quot;;

  Console.WriteLine(&quot;s1 = {0}&quot;, s1);

  Console.WriteLine(&quot;s2 = {0}&quot;, s2);

  Console.WriteLine();

  // Проверить строки на равенство.

  Console.WriteLine(&quot;s1 == s2: {0}&quot;, s1 == s2);

  Console.WriteLine(&quot;s1 == Hello!: {0}&quot;, s1 == &quot;Hello!&quot;);

  Console.WriteLine(&quot;s1 == HELLO!: {0}&quot;, s1 == &quot;HELLO!&quot;);

  Console.WriteLine(&quot;s1 == hello!: {0}&quot;, s1 == &quot;hello!&quot;);

  Console.WriteLine(&quot;s1.Equals(s2): {0}&quot;, s1.Equals(s2));

  Console.WriteLine(&quot;Yo!.Equals(s2): {0}&quot;, &quot;Yo!&quot;.Equals(s2));

  Console.WriteLine();

}

Операции равенства C# выполняют в отношении объектов string посимвольную проверку равенства с учетом регистра и нечувствительную к культуре. Следовательно, строка &quot;Hello!&quot; не равна строке &quot;HELLO!&quot; и также отличается от строки &quot;hello!&quot;. Кроме того, памятуя о связи между string и System.String, проверку на предмет равенства можно осуществлять с использованием метода Equals() класса String и других поддерживаемых им операций равенства. Наконец, поскольку каждый строковый литерал (такой как &quot;Yo!&quot;) является допустимым экземпляром System.String, доступ к функциональности, ориентированной на работу со строками, можно получать для фиксированной последовательности символов.

Модификация поведения сравнения строк

Как уже упоминалось, операции равенства строк (Compare(), Equals() и ==), а также функция IndexOf() по умолчанию чувствительны к регистру символов и нечувствительны к культуре. Если ваша программа не заботится о регистре символов, тогда может возникнуть проблема. Один из способов ее преодоления предполагает преобразование строк в верхний или нижний регистр с последующим их сравнением:

if (firstString.ToUpper() == secondString.ToUpper())

{

  // Делать что-то

}

Здесь создается копия каждой строки со всеми символами верхнего регистра. В большинстве ситуаций это не проблема, но в случае очень крупных строк может пострадать производительность. И дело даже не производительности — написание каждый раз такого кода преобразования становится утомительным. А что, если вы забудете вызвать ToUpper()? Результатом будет трудная в обнаружении ошибка.

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

Гораздо лучший прием предусматривает применение перегруженных версий перечисленных ранее методов, которые принимают значение перечисления StringComparison, управляющего выполнением сравнения. Значения StringComparison описаны в табл. 3.7.

Чтобы взглянуть на результаты применения StringComparison, создайте новый метод по имени StringEqualitySpecifyingCompareRules() со следующим кодом:

static void StringEqualitySpecifyingCompareRules()

{

  Console.WriteLine(&quot;=&gt; String equality (Case Insensitive:&quot;);

  string s1 = &quot;Hello!&quot;;

  string s2 = &quot;HELLO!&quot;;

  Console.WriteLine(&quot;s1 = {0}&quot;, s1);

  Console.WriteLine(&quot;s2 = {0}&quot;, s2);

  Console.WriteLine();

  // Проверить результаты изменения стандартных правил сравнения.

  Console.WriteLine(&quot;Default rules: s1={0},s2={1}s1.Equals(s2): {2}&quot;,

                     s1, s2, s1.Equals(s2));

  Console.WriteLine(&quot;Ignore case: s1.Equals(s2,

                     StringComparison.OrdinalIgnoreCase): {0}&quot;,

                     s1.Equals(s2, StringComparison.OrdinalIgnoreCase));

  Console.WriteLine(&quot;Ignore case, Invariant Culture: s1.Equals(s2,

              StringComparison.InvariantCultureIgnoreCase): {0}&quot;,

              s1.Equals(s2, StringComparison.InvariantCultureIgnoreCase));

  Console.WriteLine();

  Console.WriteLine(&quot;Default rules: s1={0},s2={1} s1.IndexOf(&quot;E&quot;): {2}&quot;,

                     s1, s2, s1.IndexOf(&quot;E&quot;));

  Console.WriteLine(&quot;Ignore case: s1.IndexOf(&quot;E&quot;,

                     StringComparison.OrdinalIgnoreCase):

                     {0}&quot;, s1.IndexOf(&quot;E&quot;,

                     StringComparison.OrdinalIgnoreCase));

  Console.WriteLine(&quot;Ignore case, Invariant Culture: s1.IndexOf(&quot;E&quot;,

            StringComparison.InvariantCultureIgnoreCase): {0}&quot;,

            s1.IndexOf(&quot;E&quot;, StringComparison.InvariantCultureIgnoreCase));

1 ... 57 58 59 60 61 62 63 64 65 ... 642
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Комментарии
Открыть боковую панель
Комментарии
Лариса
Лариса 11.03.2026 - 20:17
Странно,здесь имя девочки Аграфена,а на других сайтах я прослушала три книги этого цикла с именем Дарвина.Зачем менять имя и путать читателей? Опечатка- не Дарвина,  а  Дарина.
Григорий
Григорий 09.04.2025 - 22:24
Лучшая книга всех времен
Женя
Женя 02.04.2025 - 16:08
Любимая книга