Metoda ReadLine()
należąca do klasy System.Console
jest metodą, bez której prawdopodobnie nie obędzie się żaden program z interfejsem konsolowym. Dzięki niej pobierzemy od użytkownika tekst, który możemy potem wykorzystać w naszym programie.
Metoda zwraca wartość typu string
.
string odpowiedzUzytkownika = Console.ReadLine();
Przykładowe zastosowania
Przykładowym zastosowaniem może być pobranie imienia użytkownika do zmiennej.
Console.Write("Podaj imię: "); string imieUzytkownika = Console.ReadLine(); Console.WriteLine($"Witaj { imieUzytkownika }!");
Kolejnym zastosowaniem może być obsługa menu programu. Załóżmy, że wyświetlamy menu w formie tekstowej, gdzie każdemu wyborowi przypisujemy literkę. Np.:
A. Zmień ustawienia.
B. Przeprowadź obliczenia.
C. Wyjdź z programu.
Poniżej menu możemy wtedy przy pomocy metody Console.Write()
zachęcić użytkownika do podania literki odpowiadającej jego wyborowi.
Console.WriteLine("PROGRAM v. 1.0\n"); Console.WriteLine("Menu:"); Console.WriteLine("A. Zmień ustawienia."); Console.WriteLine("B. Przeprowadź obliczenia."); Console.WriteLine("C. Wyjdź z programu.\n"); Console.Write("Podaj swój wybór: "); string wyborEkranu = Console.ReadLine(); Console.Clear(); if (wyborEkranu == "A") { Console.WriteLine("Witaj na ekranie zmiany ustawień."); } else if (wyborEkranu == "B") { Console.WriteLine("Witaj na ekranie do przeprowadzania obliczeń."); } Console.ReadKey();
Pobieranie innych typów niż string
Niestety nie jesteśmy w stanie zmienić typu jaki zwraca metoda Console.ReadLine()
. Zawsze będzie to string
. Natomiast to co pobierzemy, możemy przekształcić do innego typu.
Na przykład jeśli chcemy uzyskać int
, powinniśmy użyć statycznej metody int.Parse()
lub int.TryParse()
. Pierwsza opcja jest dużo prostsza.
string wyborEkranuString = Console.ReadLine(); int wyborEkranuInt = int.Parse(wyborEkranu);
Ta wersja zakłada, że użytkownik na pewno wpisze liczbę. Jednak jeśli użytkownik wpisze cokolwiek innego niż liczbę (np. tekst, znak specjalny, spację lub nic nie wpisze) to nasz program zakończy działanie z powodu wyjątku (exception). Dlatego lepiej będzie użyć metody int.TryParse()
. Poniżej podaję przykładowy kod z zastosowaniem tej metody, jednak nie będę go omawiał, gdyż nie jest to tematem tego wpisu. Jeśli jesteś zainteresowany wpisem na temat int.TryParse()
, daj proszę znać w komentarzu.
Console.WriteLine("PROGRAM v. 1.0\n"); Console.WriteLine("Menu:"); Console.WriteLine("1. Zmień ustawienia."); Console.WriteLine("2. Przeprowadź obliczenia."); Console.WriteLine("3. Wyjdź z programu.\n"); Console.Write("Podaj swój wybór: "); string wyborEkranuString = Console.ReadLine(); int wyborEkranuInt; Console.Clear(); if (int.TryParse(wyborEkranuString, out wyborEkranuInt)) { if (wyborEkranuInt == 1) { Console.WriteLine("Witaj na ekranie zmiany ustawień."); } else if (wyborEkranuInt == 2) { Console.WriteLine("Witaj na ekranie do przeprowadzania obliczeń."); } } else { Console.WriteLine("Podano nieprawidłową opcję menu."); } Console.ReadKey();
Jeśli chodzi o inne typy liczbowe, w większości przypadków przekonwertujemy string do typu liczbowego praktycznie tak samo jak w przypadku int
a.
int wyborEkranuInt = int.Parse(wyborEkranuString); float wyborEkranuFloat = float.Parse(wyborEkranuFloat); double wyborEkranuDouble = double.Parse(wyborEkranuString); decimal wyborEkranuDecimal = decimal.Parse(wyborEkranuString);
W przypadku char
a sprawa ma się nieco inaczej.
char wyborEkranuChar = wyborEkranuString.ToCharArray()[0];
Powyższa opcja to tak naprawdę wyciągnięcie pierwszego znaku z naszego stringa. Oczywiście jeśli string
ma jeden znak, to dokładnie ten jeden znak zostanie zwrócony do naszej zmiennej. Niestety jeśli użytkownik nie wpisze w okienko nic i zatwierdzi to enterem, to program zakończy swoje działanie wyjątkiem.
Praktyczny przykład działania
Aby sprawdzić jak można wykorzystać metodę Console.ReadLine() w prawdziwym programie, zapraszam do obejrzenia mojego odcinka kursu C# od zera.
I to by było na tyle 🙂 Jeśli jesteś zainteresowana lub zainteresowany większą ilością informacji na ten temat, koniecznie daj znać w komentarzu. Pozdrawiam serdecznie 🙂