Konwersje typów

Podczas pisania aplikacji w języku C# programista wielokrotnie spotyka się z problemem niekompatybilności zmiennych. Problem ten występuje w wielu językach i polega na nieodpowiednim użyciu zmiennej, lub też, pewnej synchronizacji typów zmiennych. Wyobraź sobie zmienną numeryczną wiek, zadeklarowaną jako int. Niech zmienna ta ma wartość 18. Jednak w przypadku, gdy zajdzie konieczność wyświetlenia jej wartości w komponencie np. etykiety (label) lub innej, kompilator prawdopodobnie wyświetli błąd: Cannot implicitly convert type int to string. Jest to spowodowane faktem, że komponenty operują na konkretnych typach danych – w przypadku label, właściwość text jest typu tekstowego, zaś przypisywana zmienna wiek jest liczbą. Niektóre komponenty podają wpisaną przez użytkownika wartość jako zmienną liczbową, inne jako tekstową i w takich przypadkach, jeśli zajdzie konieczność, należy dokonywać konwersji zmiennych.
Konwersja zmiennej numerycznej na tekstową jest bardzo prosta i odbywa się poprzez skorzystanie z metody klasy String: ToString(). Przykład: zmienna nasz_wynik ma typ numeryczny (w tym przypadku decimal). Aby przekonwertować ją do zmiennej tekstowej, napiszemy:

Convert decimal nasz_wynik = Argument1.Value + Argument2.Value; <- deklaracja
wynik.Text = nasz_wynik.ToString(); <- konwertowanie i przypisanie do etykiety

W odwrotnym przypadku (konwersja tekstu na wartość numeryczną), ten sposób nie zadziała i należy posłużyć się klasą Convert, która służy do konwersji zmienych. Klasa Convert może również zastąpić wymienioną metodę konwersji.

Oto niektóre metody klasy Convert:
ToByte, ToChar, ToString, ToInt16, ToInt32, ToInt64, ToSingle, ToUint16, ToUInt32, ToUInt64, ToDecimal, ToBolean

Jeszcze lepszą metodą konwersji jest metoda bezpieczna, polegająca na wykorzystaniu metody TryParse, wywodząca się z klasy int, która zwróci wartość logiczną w przypadku sukcesu lub niepowodzenia. W ten sposób możemy zabezpieczyć program przed przypadkowym wpisaniem przez użytkownika nieprawidłowej wartości (np. tekstu zamiast liczby).

int i;
 if (!int.TryParse(textBox1.Text, out i))
 MessageBox.Show("To nie jest zmienna numeryczna!");

Istnieje kilka metod konwertowania zmiennych i warto je po kolei przetestować. Tam, gdzie nie zachodzi potrzeba kontroli wartości, można skorzystać z Convert. Jeśli program musi pobierać wartości numeryczne w oknie TextBox, którego przeznaczeniem jest pobieranie tekstu, warto użyć TryParse, gdyż uchroni to program przed przypadkowym zawieszeniem.

Przykład: zmienna a jest typu znakowego i jej wartość to „10”, zaś zmienna b typu liczbowego int. Należy dodać wartości obu zmiennych i podstawić do zmiennej numerycznej wynik. Aby dodać do siebie obnie zmienne, należy dokonać konwersji zmiennej a do typu numerycznego, a następnie wynik dodawania podstawić do zmiennej wynik:

class Program
    {
        static void Main(string[] args)
        {
            String a="10";
            int b = 10;
            int wynik = Convert.ToInt16(a) + b;
            Console.WriteLine("Wynik: " + wynik);
            Console.ReadKey();
        }
    }

281total visits,1visits today

Tagi , .Dodaj do zakładek Link.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

39 + = 42

This site uses Akismet to reduce spam. Learn how your comment data is processed.