Jason. Cała informatyka w jednym miejscu!

Następną rzecz jaką mamy do wyjaśnienia w kwestii podstaw programowania w "CSharpie" jest konwertowanie typów danych z jednego do drugiego. Używając statycznych metod klasy "Convert" w języku C#, wyżej wymienione zadanie wykonacie przy pomocy jednego słusznego wywołania. Oczywiście trzeba być gotowym na sprzeczności jakie mogą wystąpić i wiedzieć jak obsłużyć potencjalne wyjątki, które mogą zostać zgłoszone w wyniku pewnych niedopuszczalnych operacji. Co to za przypadki? Jakie są dostępne konwersje? Jak się nazywają metody? Wejdź, uspokój się, poczytaj ;). W środku jest wszystko napisane :D.

"CONVERT" W JĘZYKU C# PRZYDATNĄ KLASĄ DO KONWERSJI TYPÓW DANYCH

Weźmy pod lupę prosty przypadek. Mamy łańcuch znaków reprezentujący liczbę 11. Wygląda on tak:

"11"

Mamy za zadanie wydobyć z łańcucha liczbę jako składnik do późniejszych obliczeń (nieważne jakich, imaginuję tylko sytuację). Mimo faktu, iż z wyglądu przypomina liczbę, to program nadal traktuje to jako "string", przez co nie możemy przeprowadzać na nim jakichkolwiek wyrażeń arytmetycznych. Co możemy wtedy zrobić? Skorzystać z klasy "Convert" w języku C# i wywołać metodę "ToInt32"! O tak:

string s = "11";
int n = Convert.ToInt32(s);

Zmienna "number" przyjmie wartość 11, ale już jako liczbę :). Oto koniec problemu. W taki sposób korzystamy z metod jakie oferuje nam klasa "Convert". Powtarzam raz jeszcze: wywołujemy metody statyczne bezpośrednio z klasy! Nie ma tutaj żadnego tworzenia obiektów!

BĄDŹ GOTOWY NA NIEPRZYJEMNOŚCI!

Jest ciemna strona prezentowanych tutaj metod. Program może wyłożyć się na konwersji kiedy dochodzi do sprzecznych efektów. Próbujemy zamienić litery na liczbę ("FormatException"). Zagapiliśmy się i wychodzimy poza zakres typu danych, na który mamy ochotę skonwertować wartość ("OverflowException"). Chcemy skonwertować wartość, a tam jest "null" i nie ma czego konwertować ("ArgumentNullException"). Te trzy przypadki "orientują się" że coś jest nie halo i zgłaszają natychmiast wyjątek. Chcecie z tego korzystać świadomie? Miejcie wiedzę o tych trzech typach wyjątków:

  1. "ArgumentNullException" - sytuacja, w której przekazywana wartość jest wartością pustą ("null"),
  2. "OverflowException" - podana wartość wykracza poza dopuszczalny zakres docelowego typu (np. próba konwersji "270" na typ "byte"),
  3. "FormatException" - podana wartość zawiera w sobie znaki niebędące cyframi (w jaki sposób chcesz przerobić ciąg znaków na liczbę :P?).

Zostaliście uprzedzeni. Bądźcie świadomi tych trzech zagrożeń, a wszystko będzie przebiegać poprawnie. A w razie czego macie do dyspozycji "try" i "catch" ;)!

METODY KLASY "CONVERT" W JĘZYKU C#

Najlepiej będzie jak Wam teraz przedstawię całą listę metod służących konwersji z jednego typu na drugi. Wszystkie metody bez wyjątku mogą spotkać te trzy przypadki opisane pod poprzednim nagłówkiem. Jakieś dodatkowe uwagi odnośnie pojedynczych przypadków też już umieściłem w tabelce:

NAZWA ZNACZENIE DODATKOWE UWAGI
ToSByte konwersja na typ "sbyte" Metoda wywołana z drugim parametrem typu "int" konwertuje wartość w jednym z dostępnych systemów liczbowych (2, 8, 10, 16). Próba podania nieistniejącej podstawy systemu liczbowego skończy się zgłoszeniem wyjątku "ArgumentException".
ToByte konwersja na typ "byte"
ToInt16 konwersja na typ "short"
ToUInt16 konwersja na typ "ushort"
ToInt32 konwersja na typ "int"
ToUInt32 konwersja na typ "uint"
ToInt64 konwersja na typ "long"
ToUInt64 konwersja na typ "ulong"
ToFloat konwersja na typ "float" Metoda nie akceptuje separatora oddzielającego liczby całkowite od części ułamkowej w postaci kropki (prawdopodobnie to zależy od obowiązującego języka w systemie operacyjnym)! Trzeba podawać przecinek, zgodnie z polską notacją.
ToDouble konwersja na typ "double"
ToDecimal konwersja na typ "decimal"
ToChar konwersja na typ "char" brak
ToBoolean konwersja na typ "bool"
ToString konwersja na typ "string"

Wszelkie dodatkowe informacje odnośnie wszystkich metod i poszczególnych przesłoniętych wersji można odnaleźć w oficjalnej dokumentacji Microsoftu.

Klasa "Convert" w języku C#

"Convert" w języku C# dysponuje szeregiem metod statycznych umożliwiających konwersję danych z jednego typu do drugiego.


Tak skończyła się lekcja na temat konwertowania łańcuchów na inny typ danych. W połączeniu z wprowadzaniem danych z klawiatury ("Console.ReadLine") poszerza możliwości programu o pytanie się człowieka o zdanie ;).

PODOBNE ARTYKUŁY