using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Inheritance
{
    // Example 6-2
    public class Base
    {
    }

    public class Derived : Base
    {
    }

    public class MoreDerived : Derived
    {
    }

    class Examples2_5
    {
        // Listing 6-3
        public static void UseAsDerived(Base baseArg)
        {
            var d = (Derived) baseArg;

            //... tutaj możemy coś zrobić ze zmienną d
        }

        // Listing 6-4
        public static void MightUseAsDerived(Base b)
        {
            var d = b as Derived;

            if (d != null)
            {
                // ... tutaj możemy coś zrobić ze zmienną d
            }
        }

        public static void UseIs()
        {
            object b = null;

            // Listing 6-5
            if (!(b is WeirdType))
            {
                //    ... tu wykonujemy kod wymagany przez dane wszystkich typów prócz WeirdType
            }
        }
    }

    public class WeirdType
    {
    }
}
