Jak zapewne wiesz C#, jest językiem który ściśle przestrzega zgodności typów np. zmiennych. Dlatego nie możesz bezpośrednio przypisać zmiennej int wartości double. Jak wiesz zmienna double jest zmienną podwójnej precyzji np. 45,012. Dlatego jak próbujesz przypisać liczbę tylu double do int to występuje błąd nie zgodności typów. Jednak C# pozwala na pewne obejście tego procederu. Otóż pomaga nam tak zwane: Rzutowanie niekompatybilnych typów, zwane casting. Ogólna deklaracja rzutowania wygląda następująco:
zmienna1 = (typ docelowy) zmienna2 ;
Gdzie typ docelowy zazwyczaj jest takim samym typem jak zmienna1.
Działanie castingu prześledź na poniższym przykładzie:
Początek kodu:
using System ;
class Pokaz
{
public static void Main()
{
double a = 2541.259 ;
int wartosc ;
wartosc = (int) a ;
Console.WriteLine(wartosc);
}
}
Koniec kodu:
Zmienna ‘a’ jest typu double, zatem nie da się jej przypisać do zmiennej typu int. Jednak dzięki rzutowaniu z zmiennej double jest brana całość, a jedności przepadają. Nie myśl, że zmienna ‘a’ jest zaokrąglana, po prostu to co jest po kropce jest tracone w tym przypadku to .25, a do zmiennej ‘wartosc’ jest przypisywane to co jest przed kropką.
Przyjrzyj się jeszcze poniższemu przykładowi gdzie zostało wykorzystane rzutowanie, na tym char aby uzyskać specjalny znak UnitCode:
Początek kodu:
using System ;
class Pokaz
{
public static void Main()
{
char znak ;
byte liczba = 167 ;
znak = (char) liczba ;
Console.WriteLine(znak);
}
}
Koniec kodu:
Za zadanie dostajesz napisanie programu który wyświetla wszystkie znaki unitcode, jest ich 254, za pomocą rzutowanie. Jeżeli nie wiesz jak to wykonać to podpowiem ci że za pomocą pętli. Reszta powinna być jasna. Poniżej jest rozwiązanie, pamiętaj aby samemu rozwiązać zadanie, nie zaglądając do rozwiązania!!!
Początek kodu:
using System ;
class Pokaz
{
public static void Main()
{
char znak ;
for (byte liczba = 0 ; liczba <= 254 ; liczba++)
{
znak = (char) liczba ;
Console.WriteLine(znak);
}
}
}
Koniec kodu: