Вправа – перевірте метод TryParse()
- 12 хвилин
Іноді під час роботи з даними потрібно перетворити дані рядка на числовий тип даних. Як ви дізналися в попередній одиниці, оскільки тип даних рядка може містити нечислове значення, можливо, перетворення з string на числовий тип даних призводить до помилки середовища виконання.
Наприклад, такий код:
string name = "Bob";
Console.WriteLine(int.Parse(name));
Викликає такий виняток:
System.FormatException: 'Input string was not in a correct format.'
Щоб уникнути винятку формату, скористайтеся методом TryParse() для цільового типу даних.
Використовувати TryParse()
Метод TryParse() виконує кілька дій одночасно:
- Він намагається проаналізувати рядок у вказаний числовий тип даних.
- У разі успіху перетворене значення зберігається в параметрі, як описано в розділі нижче.
- Повертає
bool, яка вказує, чи була дія успішною, чи невдалою.
За допомогою логічного повернутого значення можна вжити заходів щодо значення (наприклад, виконати певне обчислення) або відобразити повідомлення, якщо операцію аналізу не вдалося виконати.
Примітка
У цій вправі використовуватиметься тип даних int, але аналогічний метод TryParse() доступний для всіх числових типів даних.
Вихідні параметри
Методи можуть повертати значення або повертати "пустість" – це означає, що вони не повертають значення. Методи також можуть повертати значення за допомогою out параметрів, які визначаються так само, як параметр вводу, але включають ключове слово out.
TryParse() рядок у int
Видаліть або скористайтеся оператором примітки рядка
//, щоб прокоментувати весь код із попередніх вправ.Оновіть код у редакторі коду Visual Studio, як показано нижче.
string value = "102"; int result = 0; if (int.TryParse(value, out result)) { Console.WriteLine($"Measurement: {result}"); } else { Console.WriteLine("Unable to report the measurement."); }Перевірте цей рядок коду:
if (int.TryParse(value, out result))Під час виклику методу з параметром
outперед змінною слід використовувати ключове словоout, яке містить значення. Параметрoutпризначається змінноїresultв коді(int.TryParse(value,out result). Потім можна використовувати значення, яке містить параметрoutпротягом решти коду, використовуючи зміннуresult.Метод
int.TryParse()повертаєtrue, якщо успішно перетворивstringзмінноїvalueнаint; в іншому разі повертаєтьсяfalse. Отже, огорвіть інструкцію вifоператорі, а потім виконайте логіку прийняття рішення, відповідно.Перетворене значення зберігається в змінних
intresult.intзмінноїresultоголошується та ініціалізовано перед цим рядком коду, тому до нього мають бути доступні обидва всередині блоки коду, які належать доifіelseоператорів, а також поза.Ключове слово
outвказує компілятору, що методTryParse()не повертає значення лише традиційним способом (як повернуте значення), але також повідомляє результат за цим двостороннім параметром.Коли ви запускаєте код, ви побачите такий результат:
Measurement: 102
Використання проаналізованого int пізніше в коді
Щоб продемонструвати, що змінна
result, оголошена раніше, заповнюється параметромoutі також може використовуватися пізніше в коді, оновіть код у редакторі коду Visual Studio таким чином:string value = "102"; int result = 0; if (int.TryParse(value, out result)) { Console.WriteLine($"Measurement: {result}"); } else { Console.WriteLine("Unable to report the measurement."); } Console.WriteLine($"Measurement (w/ offset): {50 + result}");У меню Файл код Visual Studio Code виберіть Зберегти. Перед створенням або запуском коду необхідно зберегти файл Program.cs.
На панелі EXPLORER, щоб відкрити термінал у розташуванні папки TestProject, клацніть правою кнопкою миші TestProject , а потім виберіть Відкрити в інтегрованому терміналі. Панель терміналів має відкритися та містити командний рядок, який показує, що термінал відкрито в папці TestProject.
У командному рядку термінала, щоб запустити код, введіть dotnet виконати і натисніть клавішу Enter.
Примітка
Якщо відображається повідомлення "Не вдалося знайти проект для запуску", переконайтеся, що в командному рядку термінала відображається очікуване розташування папки TestProject. Наприклад:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Ви побачите такий результат:
Measurement: 102 Measurement (w/ offset): 152Перевірте останній рядок коду в попередньому зразку,
Console.WriteLine($"Measurement (w/ offset): {50 + result}");, оскільки зміннаresultвизначається за межами інструкції IF, її можна отримати пізніше в коді.
Змінення змінної рядка на значення, яке не можна проаналізувати
Нарешті, подивіться на інший сценарій , де TryParse() навмисно дається погане значення, яке не можна перетворити на int.
Змініть перший рядок коду, повторно змініть змінну
valueна інше значення.string value = "bad";Крім того, змініть останній рядок коду, щоб переконатися, що результат перевищує 0, перш ніж відображати друге повідомлення.
if (result > 0) Console.WriteLine($"Measurement (w/ offset): {50 + result}");Увесь приклад коду має відповідати такому коду:
string value = "bad"; int result = 0; if (int.TryParse(value, out result)) { Console.WriteLine($"Measurement: {result}"); } else { Console.WriteLine("Unable to report the measurement."); } if (result > 0) Console.WriteLine($"Measurement (w/ offset): {50 + result}");Збережіть кодовий файл, а потім за допомогою коду Visual Studio запустіть код. Ви отримаєте такий результат:
Unable to report the measurement.Перевірте останні два рядки коду, додані в попередньому зразку.
if (result > 0) Console.WriteLine($"Measurement (w/ offset): {50 + result}");Оскільки
resultвизначено поза інструкцієюif,resultможна отримати пізніше в коді за межами блоків коду. Томуresultможна перевірити на наявність значення, більшого за нуль, перш ніж дозволити записуватиresult+ зсув як вивід. Перевіркаresultзначення, більшого за нуль, не дозволяє друкувати значення зсуву після повідомленняUnable to report the measurement..
Повторити введення
Метод TryParse() є цінним інструментом. Ось кілька швидких ідей, які потрібно запам'ятати.
- Використовуйте
TryParse()під час перетворення рядка на числовий тип даних. -
TryParse()повертаєtrue, якщо перетворення виконано успішно,false, якщо воно невдале. - Поза параметрами передбачено додатковий засіб методу, який повертає значення. У цьому випадку параметр
outповертає перетворене значення. - Використовуйте ключове слово
outпід час передачі аргументу методу, який визначив параметрout.
Перевірте свої знання
Зворотний зв’язок
Чи була ця сторінка корисна?
Ні
Потрібна допомога із цією темою?
Хочете скористатися Ask Learn, щоб отримати пояснення чи інструкції із цієї теми?