Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Тема 5 Стандартні класи С

Работа добавлена на сайт samzan.net: 2016-03-30

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 22.5.2024

Тема 5. Стандартні класи С#. Робота з рядками

(4 год)

План

5.1. Тип char. Масиви типу char

5.2. Робота з рядками. Клас String і його методи

5.3. Клас StringBuilder і його методи

5.4. Обробка помилок. Клас Exception

5.5. Комплексний приклад. Вдосконалений консольний калькулятор

Література:

  1.  Алексей Васильев C#. Объектно-ориентированное программирование. Учебный курс. – СПб.: Питер, 2012. –  320 с.
  2.  Жарков В.А. Самоучитель Жаркова по Visual Studio .Net: Visul Basic .NET, Visual C# .NET, Visual C++ .NET, Visual J# .NET. — М.: Жарков Пресс, 2002.
  3.  Климов Л. П. С#. Советы программистам. – СПб.: БХВ-Петербург, 2008. – 544 с.
  4.  Лабор В.В. C#. Создание приложений для Windows. - М: Харвест, 2003. – 768 с.
  5.  Рихтер Дж. CLR via C#. Программирование на платформе Microsoft .NET Framework 2.0 на языке C#. Мастер-класс. / Пер. с англ.  – М.: Издательство «Русская Редакция»; СПб.: Питер, 2007. – 656 с.
  6.  Троэлсен Э. C# и платформа .NET. Библиотека программиста. – СПб.: Питер, 2004. –  796 с.


Для обробки текстової інформації в
C# є широкий набір засобів: окремі символи, масиви символів, змінні і незмінні рядки і регулярні вирази.

5.1. Тип char. Масиви типу char

Символьний тип даних char представляє один символ. Він призначений для зберігання символів у кодуванні Unicode. Символьний тип відноситься до вбудованих типів даних C# і відповідає стандартному класу Char бібліотеки .NET з простору імен System. У цьому класі визначені статичні методи, що дозволяють задати вигляд і категорію символу, а також перетворити символ у верхній або нижній регістр і в число. Деякі корисні методи наведено в таблиці 5.1.

Таблиця 5.1. Деякі методи класу System.Char

Метод

Опис

GetNumericValue

Повертає числове значення символу, якщо він є цифрою, і –1 інакше

IsControl

Повертає true, якщо символ є управляючим

IsDigit

Повертає true, якщо символ є десятковою цифрою

IsNumber

Повертає true, якщо символ є цифрою

IsLetter

Повертає true, якщо символ є буквою

IsLower

Повертає true, якщо символ заданий в нижньому регістрі

IsUpper

Повертає true, якщо символ записаний у верхньому регістрі

IsWhiteSpace

Повертає true, якщо символ є пробілом  (пропуск, перехід до нового рядка і повернення каретки)

Parse

Перетворює рядок в символ (рядок повинен складатися з одного символу)

ToLower

Перетворює символ в нижній регістр

MaxValue, MinValue

Повертають символи з максимальним і мінімальним кодами (ці символи не мають видимого представлення)

Приклад 5.1. Використання методів класу System.Char

using System;

namespace ConsoleApplication1

{  class Class1

  {  static void Main()

    {

       try

       {

          char b = 'B', c = '\x63', d = '\u0032';                                                              // 1

          Console.WriteLine( "{0}  {1}  {2}", b, c, d );

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

               char.ToLower(b), char.ToUpper(c), char.GetNumericValue(d) );

          char a;

          do                                                                                                                 // 2

          {

              Console.Write( "Введіть символ: " );

              a = char.Parse( Console.ReadLine() );

              Console.WriteLine( "Введено символ {0}, його  код – {1}",

                                  a, (int)a );

              if (char.IsLetter(a))      Console.WriteLine("Літера");

              if (char.IsUpper(a))       Console.WriteLine("Верхній рег.");

              if (char.IsLower(a))       Console.WriteLine("Нижній рег.");

              if (char.IsControl(a))     Console.WriteLine("Управляючий");

              if (char.IsNumber(a))      Console.WriteLine("Число");

              if (char.IsPunctuation(a)) Console.WriteLine("Роздільник");

          } while (a != 'q');

      }

      catch

      {

          Console.WriteLine( "Виникло виключення" );

          return;

      }

   }

 }

}

Приклад 5.2. Вдосконалення консольного калькулятора. Метод IsNumeric перевіряє чи правильно введене число. У рядку NumericText знаходиться число, введене з консолі.

static bool IsNumeric(string NumericText)

       {

           //перевірка чи у рядку число

           bool isnumber = true;

           foreach (char c in NumericText)

           {

               isnumber = char.IsNumber(c);

               if (!isnumber)

               {

                   if (c != ',')

                       return isnumber;

               }

           }

           return isnumber;

       }

Масиви типу char 

Масив символів, як і масив будь-якого іншого типу побудований на основі базового класу System.Array.

Приклад 5.3

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Lab5

{

   class Program

   {

       static void Main(string[] args)

       {

           char[] a = { 'm', 'a', 's', 's', 'i', 'v' };      // 1

           char[] b = "через тиждень у нас перший кредит".ToCharArray(); // 2

           PrintArray( "масив а:", a );

           int pos = Array.IndexOf( a, 'm' );

           a[pos] = 'M';

           PrintArray( "Змінений масив а:", a );

           PrintArray( "Масив b:", b );

           Array.Reverse( b );

           PrintArray( "Змінений масив b:", b );

           Console.ReadKey();

       }

       public static void PrintArray( string header, Array a )

       {

           Console.WriteLine( header );

           foreach ( object x in a ) Console.Write( x );

           Console.WriteLine( "\n" );

       }

   }

}

5.2. Робота з рядками. Клас String і його методи

Тип string, призначений для роботи з рядками символів в кодуванні Unicode, є вбудованим посилковим типом C#. Йому відповідає базовий клас System.String бібліотеки .NET.

Створити рядок можна декількома способами:

string s;                               // відкладена ініціалізація

string t = "qqq";                  // ініціалізація строковим літералом

string u = new string(' ', 20); // конструктор створює рядок з 20 пробілів

char[] а = { '0', '0', '0' };        // масив для ініціалізації рядка

string v = new string( а );     // створення з масиву символів

Для рядків визначені наступні операції:

  •  призначення (=);
  •  перевірка на рівність (==);
  •  перевірка на нерівність (!=);
  •  звернення по індексу ([]);
  •  конкатенація  рядків (+).

Не дивлячись на те, що рядки є посилковим типом даних, на рівність і нерівність перевіряються не посилання, а значення рядків. Рядки рівні, якщо мають однакову кількість символів і збігаються посимвольно.

Звертатися до окремого елементу рядка за індексом можна лише для отримання значення, але не для його зміни. Це пов'язано з тим, що рядки типу string відносяться до так званих незмінних типів даних. Методи, що змінюють вміст рядка, насправді створюють нову копію рядка. Невживані "старі" копії автоматично видаляються при збірці сміття.

В базовому класі System.String реалізовано багато різних методів, що виконують операції над рядками. Основні властивості і методи класу String перелічені у табл. 5.2.

Таблиця 5.2. Деякі властивості і методи класу System.String

Length

Властивість. Дозволяє отримати кількість символів в рядку.

Concat()

Дозволяє з'єднати декілька рядків або змінних типу object.

CompareTo()

Дозволяє порівняти два рядки. В разі рівності рядків результат виконання функції дорівнює нулю. При позитивному значенні функції більшим є рядок, для якого викликався метод.

Copy()

Створює нову копію існуючого рядка.

Format()

Застосовується для форматування рядка з використанням різних примітивів (рядків і числових даних) і підстановлювальних виразів вигляду {0}.

Insert()

Дозволяє вставити один рядок всередину існуючого.

Remove()

Replace()

Видаляють або замінюють символи в рядку.

ToUpper()

ToLower()

Перетворюють всі символи рядка в строкові або прописні.

Chars

Дозволяє отримати символ, що знаходиться в певній позиції рядка.

Join()

Створює рядок, сполучаючи задані рядки і розділяючи їх рядком-роздільником.

Replace()

Замінює один символ рядка іншим.

Split()

Повертає масив рядків з елементами - підрядками основного рядка, між якими знаходяться символи-роздільники.

Substring()

Дозволяє отримати підрядок основного рядка, заданої довжини, що починається з певного символу.

Trim()

Видаляє пропуски або набір заданих символів на початку і кінці основного рядка.

ToCharArray()

Створює масив символів і вставляє в нього символи початкового рядка.

При роботі з рядками в C# необхідно враховувати таке. Тип string є посилковим типом. Проте, не дивлячись на це, при використанні операцій порівняння відбувається порівняння значень строкових об'єктів, а не адрес цих об'єктів, розміщених в оперативній пам'яті. Крім того, оператор "+" об'єкту string перевизначений тому при його використанні застосовується метод Concat().

Приклад 5.4

namespace ConsoleApplication1

{

   class Program

   {

       static void Main(string[] args)

       {

           string s = "прекрасная королева Изольда";

           Console.WriteLine(s);

           string sub = s.Substring(3).Remove(12, 2);              // 1

           Console.WriteLine(sub);

           string[] mas = s.Split(' ');                            // 2

           string joined = string.Join("! ", mas);

           Console.WriteLine(joined);

           Console.WriteLine("Введите строку");

           string x = Console.ReadLine();                          // 3

           Console.WriteLine("Вы ввели строку " + x);

           double a = 12.234;

           int b = 29;

           Console.WriteLine(" a = {0,6:C}  b = {1,2:X}", a, b);   // 4

           Console.ReadKey();

       }

   }

}

Результат роботи програми:

прекрасная королева Изольда

красная корова Изольда

прекрасная! королева! Изольда

Введите строку

не хочу!

Вы ввели строку не хочу!

a = 12,23p.  b = 1D

Форматування рядків

У операторі 4 цього прикладу неявно застосовується метод Format, який замінює всі входження параметрів у фігурних дужках значеннями відповідних змінних із списку виводу. Після номера параметра можна задати мінімальну ширину поля виводу, а також вказати специфікатор формату, який визначає форму представлення значення, що виводиться.

У загальному вигляді параметр задається таким чином:

{n [,m[:спецификатор_формата]]}

Тут n — номер параметра. Параметри нумеруються з нуля, нульовий параметр замінюється значенням першої змінної із списку виводу, перший параметр — другою змінною, і так далі Параметр m визначає мінімальну ширину поля, яке відводиться під значення, що виводиться. Якщо числу, що виводиться, досить меншої кількості позицій, невживані позиції заповнюються пробілами. Якщо числу потрібно більше позицій, параметр ігнорується.

Специфікатор формату визначає формат виведення значення. Наприклад, специфікатор C (Currency) означає, що параметр повинен форматуватися як валюта з урахуванням національних особливостей представлення, а специфікатор Х (Hexadecimal) задає шістнадцяткову форму представлення значення, що виводиться.

Досить часто при роботі з рядками виникає необхідність розділити рядок на підрядки, відокремлені один від одного заданими символами-роздільниками. Виділення лексем використовується в задачах лексичного аналізу в усіх компіляторах. У наступному прикладі задається рядок символів, в якому є декілька символів-роздільників. За допомогою функції Split рядок розділяється на підрядки, які потім виводяться на екран кожний в окремому рядку. Для завдання символів-роздільників використовується масив символів. В цьому прикладі також застосовується функція Trim, необхідна для того, щоб переконатися в тому, що заданий рядок не складається з одних лише пробілів.

Приклад 5.5

static void Main(string[] args)

       {

         string words = "рядок, що містить декілька слів, а також знаки пунктуації: такі як двокрапка і крапка.";

         string [] split = words.Split(new Char [] {' ', ',', '.', ':'});

         foreach (string s in split)

         {

          if (s.Trim() != "")

          Console.WriteLine(s);

         }

         Console.ReadKey();

       }

Приклад 5.6. Вдосконалення консольного калькулятора. Програма вводить одразу арифметичний вираз, наприклад, 2+3. Необхідно розбити рядок на окремі частини (лексичний аналіз). Фрагмент коду може бути таким:

.......................................................................................

    string str;     //Рядки для розбору виразу

    string[] arrStr = new string[2];

    string op = "";

    Console.WriteLine("Введіть арифметичний вираз");

    str = Console.ReadLine();

    //аналіз вхідного виразу

    string[] split = str.Split(new Char[] { ' ', '*', '+', '-', '/' });

    int i = 0;

    foreach (string s in split)

     {

       if (s.Trim() != "")

        {

          Console.WriteLine(s);

          arrStr[i] = s;

          i++;

         }

      }

     //пошук операції

    char[] array0p = new char[4] { '+', '-', '*', '/' };

    foreach (char c in array0p)

    {

      int indexop = str.IndexOf(c);

      if (indexop != -1)

       {

         op = str[indexop].ToString();

         break;

        }

}

5.3. Клас StringBuilder і його методи

Іноді слід уникати ситуацій, коли в результаті виконання операції створюється новий рядок, оскільки це пов'язано з додатковими витратами пам'яті та інших ресурсів комп'ютера при виконанні операції.

C# містить спеціальний клас StringBuilder, використовуючи який можна уникнути створення копій рядків при їх обробці. Всі зміни, що вносяться до об'єкту даного класу, негайно відображаються в ньому, що ефективніше, ніж робота з копіями рядка.

Основною операцією, яка найчастіше використовується класом StringBuilder, є операція додавання до рядка вмісту. Для цього існує метод Append. Наступний код додає один рядок до іншого і виводить результат на консоль. При цьому змінюється оригінал рядка, копія не створюється:

StringBuilder sb = new StringBuilder("Наступного тижня у нас кредит");

sb.Append(", потрібно захистити лаб.роботи");

Сonsole.Write(sb);

Окрім додавання клас StringBuilder містить інші методи, найбільш значимі з яких наведені нижче. Після того, як усі необхідні дії, пов'язані з обробкою рядка, були виконані, необхідно викликати метод ToString() для перетворення вмісту об'єкту в звичайний тип даних string.

Таблиця 5.3. Деякі методи класу StringBuilder

Append

Додавання заданого рядка в кінець рядка об'єкту.

AppendFormat

Додавання заданого форматованого рядка (рядка, що містить управляючі символи) в кінець рядка об'єкту.

CopyTo

Копіювання символів заданого сегменту рядка в задані комірки масиву символів.

Insert

Додавання рядка в задану позицію рядка об'єкту.

Remove

Видалення заданої кількості символів з рядка об'єкту

Replace

Заміна заданого символу або рядка об'єкту на інший заданий символ або рядок.

При інтенсивній роботі з рядками рекомендується використовувати клас StringBuilder, оскільки це дозволяє зменшити накладні витрати, пов'язані із створенням копії рядка при виконанні кожної операції.

5.4. Обробка помилок. Клас Exception.

Мова С#, як і багато інших об'єктно-орієнтованих мов, реагує на помилки і ненормальні ситуації за допомогою виклику виключень (exceptions) – програмних переривань.

Виключення - це об'єкт, що містить інформацію про незвичайний програмний випадок.

Коли у програмі виникає виняткова ситуація, вона викликає (throws) виключення. Після виклику виключення виконання поточної функції переривається і стек звільняється, поки не буде знайдений відповідний обробник виключення.

Обробник виключення (exception handler) - це програмний блок, призначений для реагування на виклик виключення. Обробники виключень реалізуються в операторах try...catch.

Якщо в тексті функції є фрагмент, який має бути виконаний незалежно від того, чи було викликано яке-небудь виключення (наприклад, фрагмент, що звільняє виділені програмі ресурси), то його можна помістити в блок finally, де цей фрагмент програми напевно буде виконаний навіть після виклику виключення.

5.4.1. Виклик і обробка виключень

У мові С# виключеннями можуть виступати лише об'єкти типу System. Exception або об'єкти похідного від нього типа.

Виключення генерує або середовище виконання, або програміст за допомогою оператора throw.

Простір імен System середовища CLR включає цілий ряд типів виключень, якими можна користуватися в програмі.

Таблиці 5.4. Часто використовувані стандартні виключення

Ім'я

Опис

DivideByZeroException

Спроба ділення на нуль

FormatException

Спроба передати в метод аргумент невірного формату

IndexOutOfRangeException

Індекс масиву виходить за границі діапазону

InvalidCastException

Помилка перетворення типу

OutOfMemoryException

Недостатньо пам'яті для створення нового об'єкту

OverFlowException

Переповнення при виконанні арифметичних операцій

StackOverFlowException

Переповнення стеку

Виключення виявляються і обробляються в операторі try.

Оператор try містить три частини:

  •  контрольований блок — складений оператор, перед яким стоїть ключове слово try. У контрольований блок включаються потенційно небезпечні оператори програми;
  •  один або декілька обробників виключень — блоків catch, в яких описується, як обробляються помилки різних типів;
  •  блок завершення finally виконується незалежно від того, виникла помилка в контрольованому блоці чи ні.
  •  

5.4.2. Синтаксис оператора try:

try блок [ блоки catch ] [ блок finally ]

Бути відсутніми можуть або блоки catch, або блок finally, але не обидва одночасно.

Розглянемо, яким чином реалізується обробка виключень.

  1.  Обробка виключення починається з появи помилки. Функція або операція, в якій виникла помилка, генерує виключення.
  2.  Виконання поточного блоку припиняється, відшукується відповідний обробник виключення, і йому передається управління.
  3.  Виконується блок finally, якщо він присутній.
  4.  Якщо обробник не знайдений, викликається стандартний обробник виключення. Зазвичай він виводить на екран вікно з інформацією про виключення і завершує поточний процес.

Обробники виключень повинні розташовуватися безпосередньо за блоком try. Вони починаються з ключового слова catch, за яким в дужках вказується тип оброблюваного виключення. Можна записати один або декілька обробників відповідно до типів оброблюваних виключень. Блоки catch є видимими в тому порядку, в якому вони записані, поки не буде знайдений відповідний тип викинутого виключення.

Існують три форми запису обробників:

catch( тип ім'я ) { ... /* тіло обробника */ }

catch( тип )     { ... /* тіло обробника */ }

catch            { ... /* тіло обробника */ }

Перша форма застосовується, коли ім'я параметра використовується в тілі обробника для виконання яких-небудь дій.

Друга форма не передбачає використання інформації про виключення, грає роль лише його тип.

Третя форма застосовується для перехоплення всіх виключень. Оскільки обробники є видимими в тому порядку, в якому вони записані, обробник третього типу (він може бути лише один) слід розміщати після всіх інших.

Приклад 5.7:

try {

  ...  // Контрольований блок

}

catch ( OverflowException e ) {

   ...    // Обробка виключень класу OverflowException (переповнення)

}

catch ( DivideByZeroException ) {

   ... // Обробка виключень класу DivideByZeroException (ділення на 0)

}

catch {

   ...    // Обробка всіх інших виключень

}

Якщо виключення в контрольованому блоці не виникло, всі обробники пропускаються.

В будь-якому разі, сталося виключення чи ні, управління передається в блок завершення finally (якщо він існує), а потім — першому оператору, який знаходиться безпосередньо за оператором try.

Оператори try можуть багато разів вкладатися один в одного. Виключення, яке виникло у внутрішньому блоці try і не було перехоплене відповідним блоком catch, передається на верхній рівень, де продовжується пошук відповідного обробника. Цей процес називається поширенням виключення.

5.4.3. Об'єкти Exception

Клас System. Exception має ряд корисних методів і властивостей. Зокрема, властивість Message надає інформацію про виключення, наприклад про причини його виникнення. Властивість Message доступна лише для читання, а програма, що викликає виключення, може передати цю властивість конструктору виключення як аргумент.

Оператор throw

Щоб проінформувати про ненормальну ситуацію, що виникла в якому-небудь класі С#, програміст викликає виключення, користуючись ключовим словом throw, наприклад:

 

throw new System.Exceptlon():

Виклик виключення відразу ж припиняє виконання програми, а середовище CLR тим часом шукає процедуру обробки виключення. Якщо обробник виключення відсутній в поточному методі, стек викликів звільняється. Якщо CLR пройде стек аж до Main(), не знайшовши обробник викликаного виключення, виконання програми завершується.

5.5. Комплексний приклад. Вдосконалений консольний калькулятор

Створення консольного калькулятора на 4 дії. Обчислюваний вираз вводиться одним рядком. Виконується розбір рядка і перевірка правильності його введення. У разі виявлення помилки викликається обробник помилки.

namespace ConsoleCalculator

{///Реалізувати  метод обчислення виразу a X b, де a, b – числа,

   ///X={+,-,*,/}. Вираз ввести з консолі, результат вивести на консоль.

   ///При виборі операції використати оператор switch.

   class Program

   {

       static bool IsNumeric(string NumericText)

       {

           //перевірка чи у рядку число

           bool isnumber = true;

           foreach (char c in NumericText)

           {

               isnumber = char.IsNumber(c);

               if (!isnumber)

               {

                   if (c != ',')

                       return isnumber;

               }

           }

           return isnumber;

       }

       static double ConvertDouble(string NumericText)

       {

           double digit;

           //конвертація і округлення числа

           digit = double.Parse(NumericText);

           digit = Math.Round(digit, 2);

           return digit;

       }

       static void Main(string[] args)

       {

           string str;     //Рядки для розбору виразу

           string[] arrStr = new string[2];

           string op = "";

           double digit1, digit2, result;      //числа

           do

           {

               Console.WriteLine("Введіть арифметичний вираз");

               str = Console.ReadLine();

               //аналіз вхідного виразу

               try

               {

                   if (str.Length == 0)

                   {

                       throw new Exception("Нічого не введено! Введіть правильний вираз.");

                   }

                   string[] split = str.Split(new Char[] { ' ', '*', '+', '-', '/' });

                   int i = 0;

                   foreach (string s in split)

                   {

                       if (s.Trim() != "")

                       {

                           Console.WriteLine(s);

                           arrStr[i] = s;

                           i++;

                       }

                   }

                   //пошук операції

                   char[] array0p = new char[4] { '+', '-', '*', '/' };

                   foreach (char c in array0p)

                   {

                       int indexop = str.IndexOf(c);

                       if (indexop != -1)

                       {

                           op = str[indexop].ToString();

                           break;

                       }

                   }

                   if (op.Length == 0)

                   {

                       throw new Exception("Операція не знайдена у виразі");

                   }

                   //перевірка чисел

                   if (!IsNumeric(arrStr[0]))

                   {

                       throw new Exception("Перший член виразу - не число");

                   }

                   digit1 = ConvertDouble(arrStr[0]);

                   if (!IsNumeric(arrStr[1]))

                   {

                       throw new Exception("Перший член виразу - не число");

                   }

                   digit2 = ConvertDouble(arrStr[1]);

                   switch (op)

                   {

                       case ("+"):

                           result = digit1 + digit2;

                           break;

                       case ("-"):

                           result = digit1 - digit2;

                           break;

                       case ("/"):

                           result = digit1 / digit2;

                           break;

                       case ("*"):

                           result = digit1 * digit2;

                           break;

                       default:

                           throw new Exception("Невідома операція");

                   }//switch

                   // Console.WriteLine("s1={0},op={1},s2={2}", s1, op, s2);

                   Console.WriteLine("аргумент1={0},операція={1},аргумент2={2}", digit1, op, digit2);

                   Console.WriteLine("Результат= " + result);

                   Console.ReadKey();

               }

               catch (Exception e)

               {

                   Console.WriteLine("Помилка у вхідних даних" + e.Message);

                   Console.ReadLine();

               }

               Console.WriteLine("Для завершення роботи введіть exit");

           } while (Console.ReadLine() != "exit");

       }

   }

}

Висновки

Для обробки текстової інформації в C# є широкий набір засобів: окремі символи, масиви символів, змінні і незмінні рядки і регулярні вирази. Оскільки тип даних char є значимим типом, а тип string є посилковим, необхідне явне перетворення одного типу в інший. Новим класом для роботи з рядками в С# є клас StringBuilder, методи якого використовуються не з копією рядка в пам'яті, а з самим рядком. Використання цього класу потребує менше ресурсів памті, ніж для класу String.

Важливою можливістю мови C# є обробка помилок в програмі, яка реалізована в класі Exception. Простір імен System середовища CLR включає цілий ряд типів виключень, якими можна користуватися в програмі.

Перехоплення помилок в програмі підвищує її надійність.

Питання і завдання для самостійної роботи студента

1. Що таке кодування Unicode?

2. Які засоби роботи з окремими символами надає C#?

3. Опишіть основні методи і властивості класу string.

4. Чи можна змінити довжину рядка після того як пам'ять під нього була виділена?

5. Яка різниця між типами char і string?

6. До якого класу належить метод IsDigit?

7. Як створити одновимірний масив символів?

8. Як перетворити рядок типу string у масив типу char?

9. Яке основне обмеження має клас string?

10. Які існують можливості форматування рядків?

11. Тип string є значимим чи посилковим?

12. Перелічіть операції роботи з рядками.

13. Як визначити кількість символів у рядку?

14. Як розбити рядок на окремі слова?

15. Чим відрізняються класи String і StringBuilder?

16. Як об'єднати два об'єкти StringBuilder?

17. Чому іноді для роботи з рядками краще використовувати клас StringBuilder?

18. Лабораторна робота № 5.




1.  Введение 11 Перспективы развития газовой промышленности 1
2. вступают между собой в разные отношения и с взрослыми
3. Корпоративне управління
4. руб. ’ Стоимость основных производственных фондов в отчетном периоде млрд.html
5. Техника и технология производства сливочного масла
6. Этика- Издание Музея Московского Орденов Ленина и Трудового Красного Знамени Художественного Академическ
7. Демократический режим принципы и практика
8. Пушкин. Письма. 2 декабря 18
9. практикум з фізики частина 2 коливання і хвилі оптика Міністерство освіти та науки України В
10. Вариант 8 Задача 121 Построить и закрасить квадрат со стороной 30 пикселей центр которого совмещен с
11. уничтоженного за советское время за счет влияния мегаполиса РостованаДону и открытия многочисленных шахт
12. а от фамилия имя отчество при наличии ЗАЯ
13. Реферат на тему- Розвиток і виховання
14. На тему- Анализ финансового состояния и финансовых результатов деятельности ОАО Распадская.
15. Социальная философия как наука
16. славянском северном типе язычества ибо нашему менталитету абсолютно не свойственны уклады представителей
17. Технология консервирования мяса
18. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата юридичних наук2
19. Тема- Створення проектів джерел живлення та їх аналіз
20. историческая эпоха