Mógłby ktoś mi wytłumaczyć bardziej dosadnie kiedy, co, jak i gdzie?
Mam ciężką głowę do tego a niestety wszelkie tłumaczenia są dla mnie niejasne.
Możesz też rzucić okiem na to :
class Program
{
static void Main(string[] args)
{
Cat cat = new Cat();
Dog dog = new Dog();
Car car = new Car();
//?
Console.WriteLine(cat is Animal);
Console.WriteLine(dog is Animal);
Console.WriteLine(car is Animal);
//--
Console.WriteLine(car is Vehicle);
//?
cat.poleAnimal1 = "poleAnimal1";
cat.poleCat = "poleCat";
//z dog tak samo
/*
* Zwróć uwagę, że Dog i Cat dziedzicząc mają dostęp do pola klasy bazowej (poleAnimal1)
* */
//animal ma tylko dostep do swojego pola
Animal animal = new Animal();
animal.poleAnimal1 = "asdf";
//Jeżeli używamy as to rzutuje się jedną klasę na drugą
//Dla przykładu:
Cat cat2 = new Cat();
Animal animal2 = cat2 as Animal;
animal2.poleAnimal1 = "asdf";// ok -> cat2 'jest teraz' animal
animal2.poleCat = "asdfg";//nie ok -> cat2 jest traktowane jak animal więc nie ma dostępu do swoich pól/metod.
}
}
class Animal
{
public string poleAnimal1;
}
class Dog : Animal
{
public string poleDog;
}
class Cat : Animal
{
public string poleCat;
}
class Vehicle
{
public string poleVehicle;
}
class Car : Vehicle
{
public string poleCar;
}
Zastanów się co wypisze konsola.
is
od as
.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.
is
ias
bo nawet nie ma tam wzmianki o tym, żeas
zwracanulla
w przeciwieństwie do zwykłego rzutowania, które rzuca exception jak konwersja nie jest możliwa.