Operator is i as w C#

0

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.

3

Ty tak na serio, że wszelkie tłumaczenia są niejasne?

is sprawdza czy zmienna jest danego typu, a as rzutuje na dany typ jeśli to możliwe, w przeciwnym wypadku zwraca null.

2

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1