Podsumowanie — bezpieczeństwo null
Część sekcji Logika i sterowanie przepływem ścieżki C# w Coddy. Lekcja 35 z 66.
Wyzwanie
ŁatwyUtwórz metodę o nazwie SafelyProcessData, która przyjmuje dwa parametry:
- Ciąg znaków
name, który może mieć wartość null - Liczbę całkowitą z możliwością przypisania wartości null
age
Metoda powinna:
- Sprawdzić, czy
namema wartość null lub jest pusty, używając odpowiednich wzorców sprawdzania wartości null - Sprawdzić, czy
agema przypisaną wartość - Zwrócić sformatowany ciąg znaków w następujący sposób:
- Jeśli
namema wartość null, zwrócić "No name provided" - Jeśli
namejest pusty lub zawiera tylko białe znaki, zwrócić "Invalid name" - Jeśli
agema wartość null, zwrócić "Name: [name], Age: Unknown" - W przeciwnym razie zwrócić "Name: [name], Age: [age]"
- Jeśli
Pamiętaj, aby użyć technik programowania defensywnego, które obsłużą wszystkie możliwe przypadki wartości null!
Spróbuj swoich sił
using System;
class Program
{
// Zaimplementuj tutaj metodę SafelyProcessData
static void Main(string[] args)
{
string nameInput = Console.ReadLine();
string ageInput = Console.ReadLine();
// Obsłuż przypadek, gdy dane wejściowe są ciągiem znaków "null"
string name = nameInput == "null" ? null : nameInput;
int? age = null;
if (ageInput != "null")
{
age = int.Parse(ageInput);
}
string result = SafelyProcessData(name, age);
Console.WriteLine(result);
}
}Wszystkie lekcje w sekcji Logika i sterowanie przepływem
1Tablice wielowymiarowe
Podstawy tablic 2DDeklarowanie i inicjalizacja tablic 2DDostęp do elementów tablic 2DZagnieżdżone pętle z tablicami 2DTablice postrzępionePodstawowe operacje na macierzachPodsumowanie — tablice wielowymiarowe4Techniki sterowania przepływem
Wczesne zwrotyKlauzule ochronneInstrukcje skoku (goto)Break i continueSpłaszczanie zagnieżdżonych warunków7Zaawansowane operatory logiczne
Ewaluacja z krótkim spięciemWarunkowe operatory logicznePriorytet operatorówPowtórzenie — zaawansowane operatory2Zaawansowane podejmowanie decyzji
Wiele warunkówZłożona logika Boole’aPorównanie if i switchZagnieżdżone instrukcje switchPodsumowanie — zaawansowane decyzje5Obsługa wyjątków
Podstawy try-catchTypy wyjątkówWiele bloków catchPraca z plikamiBlok finallyusing a try-finallyWłasne wyjątkiPowtórzenie — obsługa błędów3Udoskonalenia pętli
Wydajność pętliIterowanie po złożonych strukturachKażdy typ pętliRefaktoryzacja pętliPodsumowanie — zoptymalizowane pętle6Obsługa wartości null
Podstawy referencji nullTypy wartości dopuszczające nullWzorce sprawdzania nullProgramowanie defensywnePodsumowanie — bezpieczeństwo nullPoćwicz samodzielnie: Kompilator C# online