Dla typów wbudowanych istnieją metody Parse() i TryParse(). Mają one za zadanie przekształcenie danych z typu string na typ dla którego wywołujemy metodę.
Zobaczmy przykład:

using System;
class Program {
    static void Main() {
        string liczba = "101";
        int liczba2 = int.Parse(liczba);          
        Console.WriteLine("Wartość dla zmiennej liczba2 wynosi = " + liczba2);
        Console.ReadLine();
    }
}

W metodzie Main() zadeklarowałem zmienną typu string o nazwie liczba i nadałem jej wartość 101. Następnie stworzyłem zmienną typu int o nazwie liczba2. Dla tej zmiennej przypisujemy wartość zmiennej o nazwie liczba. Używamy do tego celu metody Parse();
Oto rezultat działania aplikacji:

Konwersja typów

Rys. Wyświetlenie na ekranie wartości dla zmiennej o nazwie liczba2

Jak widzimy wyświetlona została poprawna wartość. Metoda Parse() zwraca wyjątek gdy pojawia się jakiś problem przy zmianie typu. Zobaczmy przykład:

using System;
class Program {
    static void Main() {
        string liczba = "101.2";
        int liczba2 = int.Parse(liczba);          
        Console.WriteLine("Wartość dla zmiennej liczba2 wynosi = " + liczba2);
        Console.ReadLine();
    }
}

Zmieniłem wartość dla zmiennej liczba. Wynosi ona teraz 101.2. Tak jak w przypadku użycia klasy System.Convert liczba nie jest rozpoznawana jako typ int i kompilator zgłosi wyjątek.

Konwersja typów

Rys. Wyjątek zwrócony przez kompilator

Stosując metodę TryParse() pozbędziemy się wyjątków zgłaszanych przez kompilator. Gdy będzie problem z przekształceniem typu string na typ dla którego używamy metody TryParse(), zostanie zwrócona wartość domyślna dla danego typu. Zobaczmy przykład:

using System;
class Program {
    static void Main() {
        string liczba = "101.2";
        int liczba2 ;
        int.TryParse(liczba, out liczba2);  
        Console.WriteLine("Wartość dla zmiennej liczba2 wynosi = " + liczba2);
        Console.ReadLine();
    }
}

Metodę TryPatse() stosuje się trochę inaczej niż metodę Parse(). Zwraca ona wartość typu bool. Zwracana jest wartość true w przypadku gdy zmiana typu się uda i false w przypadku pojawienia się wyjątku. Funkcja przyjmuje dwa parametry. W pierwszym podajemy zmienną lub wyrażenie do konwersji. Dzięki drugiemu parametrowi zwracany jest wynik. Podczas podawania drugiego parametru używamy słowa kluczowego out. Jego znaczenie omówię w innym wpisie. W przypadku pojawienia się wyjątku zostanie zwrócona domyślna wartość dla danego typu.
Rezultat działania aplikacji:

Konwersja typów

Rys. Wyświetlenie na ekranie wartości dla zmiennej o nazwie liczba2

Zobaczmy inny przykład:

using System;
class Program {
    static void Main() {
        string zm1 = "trUe";
        bool zm2;
        bool.TryParse(zm1, out zm2);
        Console.WriteLine("Wartość dla zmiennej zm2 wynosi = " + zm2);
        Console.ReadLine();
    }
} 

W tym przykładzie przekształciłem typ string na typ bool. Typ bool, może przechowywać wartość true lub false. Podczas konwersji metoda TryParse() jak i Parse() nie bierze pod uwagę wielkości liter dla parametru typu string.
Oto rezultat działania aplikacji:

Konwersja typów

Rys. Wyświetlenie na ekranie wartości dla zmiennej o nazwie zm2

Zmienię teraz wartość dla zmiennej o nazwie zm1.

using System;
class Program {
    static void Main() {
        string zm1 = "aaaaa";
        bool zm2;
        bool.TryParse(zm1, out zm2);
        Console.WriteLine("Wartość dla zmiennej zm2 wynosi = " + zm2);
        Console.ReadLine();
    }
}
 

Przez zmianę wartości metoda TryParse() nie dokonała konwersji i zwróciła wartość domyślną dla typu bool.
Oto rezultat działania aplikacji:

Konwersja typów

Rys. Wyświetlenie na ekranie wartości dla zmiennej o nazwie zm2

Dzięki temu, że metoda TryParse() zwraca wartość typu bool, możemy sprawdzać czy konwersja przebiegła prawidłowo.
Zobaczmy przykład:

using System;
class Program {
    static void Main() {
        string zm1 = "aaaaa";
        bool zm2;
        if( bool.TryParse(zm1, out zm2))
        Console.WriteLine("Wartość dla zmiennej zm2 wynosi = " + zm2);
        else
          Console.WriteLine("Konwersja się nie udała zwrócona została wartość domyślna wynosząca = " + zm2);

        Console.ReadLine();
    }
}

Oto rezultat działania aplikacji:

Konwersja typów
Rys. Rezultat działania aplikacji

W tym przykładzie konwersja typu string na typ double jest niemożliwa. Metoda TryParse() zwróci wartość false przez co warunek dla if nie zostanie spełniony i wykona się część kodu zawarta w else.

Zapraszam do zapoznania się z moim kursem C#: http://pisz-kod.pl/kurs-c-sharp/