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

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

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

// Здесь определен класс StringBuilder:

using System.Text;

Уникальность класса StringBuilder в том, что при вызове его членов производится прямое изменение внутренних символьных данных объекта (делая его более эффективным) без получения копии данных в модифицированном формате. При создании экземпляра StringBuilder начальные значения объекта могут быть заданы через один из множества конструкторов. Если вы не знакомы с понятием конструктора, тогда пока достаточно знать только то, что конструкторы позволяют создавать объект с начальным состоянием при использовании ключевого слова new. Взгляните на следующий пример применения StringBuilder:

static void FunWithStringBuilder()

{

  Console.WriteLine("=> Using the StringBuilder:");

  StringBuilder sb = new StringBuilder("**** Fantastic Games ****");

  sb.Append("n");

  sb.AppendLine("Half Life");

  sb.AppendLine("Morrowind");

  sb.AppendLine("Deus Ex" + "2");

  sb.AppendLine("System Shock");

  Console.WriteLine(sb.ToString());

  sb.Replace("2", " Invisible War");

  Console.WriteLine(sb.ToString());

  Console.WriteLine("sb has {0} chars.", sb.Length);

  Console.WriteLine();

}

Здесь создается объект StringBuilder с начальным значением "**** Fantastic Games ****". Как видите, можно добавлять строки в конец внутреннего буфера, а также заменять или удалять любые символы. По умолчанию StringBuilder способен хранить строку только длиной 16 символов или меньше (но при необходимости будет автоматически расширяться): однако стандартное начальное значение длины можно изменить посредством дополнительного аргумента конструктора:

// Создать экземпляр StringBuilder с исходным размером в 256 символов.

StringBuilder sb = new StringBuilder("**** Fantastic Games ****", 256);

При добавлении большего количества символов, чем в указанном лимите, объект StringBuilder скопирует свои данные в новый экземпляр и увеличит размер буфера на заданный лимит.

Сужающие и расширяющие преобразования типов данных

Теперь, когда вы понимаете, как работать с внутренними типами данных С#, давайте рассмотрим связанную тему преобразования типов данных. Создайте новый проект консольного приложения по имени TypeConversions и добавьте его в свое решение. Приведите код к следующему виду:

using System;

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

Console.WriteLine("***** Fun with type conversions *****");

// Сложить две переменные типа short и вывести результат.

short numb1 = 9, numb2 = 10;

Console.WriteLine("{0} + {1} = {2}",

  numb1, numb2, Add(numb1, numb2));

Console.ReadLine();

static int Add(int x, int y)

{

  return x + y;

}

Легко заметить, что метод Add() ожидает передачи двух параметров int. Тем не менее, в вызывающем коде ему на самом деле передаются две переменные типа short. Хотя это может выглядеть похожим на несоответствие типов данных, программа компилируется и выполняется без ошибок, возвращая ожидаемый результат 19.

Причина, по которой компилятор считает такой код синтаксически корректным, связана с тем, что потеря данных в нем невозможна. Из-за того, что максимальное значение для типа short (32 767) гораздо меньше максимального значения для типа int (2 147 483 647), компилятор неявно расширяет каждое значение short до типа int. Формально термин расширение используется для определения неявного восходящего приведения которое не вызывает потерю данных.

На заметку! Разрешенные расширяющие и сужающие (обсуждаются далее) преобразования, поддерживаемые для каждого типа данных С#, описаны в разделе "Type Conversion Tables in .NET" ("Таблицы преобразования типов в .NET") документации по .NET Core.

Несмотря на то что неявное расширение типов благоприятствовало в предыдущем примере, в других ситуациях оно может стать источником ошибок на этапе компиляции. Например, пусть для переменных numb1 и numb2 установлены значения, которые (при их сложении) превышают максимальное значение типа short. Кроме того, предположим, что возвращаемое значение метода Add() сохраняется в новой локальной переменной short, а не напрямую выводится на консоль.

static void Main(string[] args)

{

  Console.WriteLine("***** Fun with type conversions *****");

  <b>// Следующий код вызовет ошибку на этапе компиляции!</b>

  short numb1 = 30000, numb2 = 30000;

  short answer = Add(numb1, numb2);

  Console.WriteLine(&quot;{0} + {1} = {2}&quot;,

    numb1, numb2, answer);

  Console.ReadLine();

}

В данном случае компилятор сообщит об ошибке:

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

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

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


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

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


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

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

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


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